字符串连接空值并检索空值java

字符串连接空值并检索空值java,java,arrays,regex,java-8,stream,Java,Arrays,Regex,Java 8,Stream,我使用Stream.of将两个字符串值与分隔符“:”连接起来,其中一个可以为null,但当我将其检索到字符串数组时,我希望该数组中有固定数量的元素。我想知道字符串数组中哪一个是空的。 例如,我使用 Stream.of("abc", "def", "ghi", null) .collect(Collectors.joining(":")); 它将是“abc:def:ghi:null”。然后将其拆分为字符串数组,我使用 final String[] strings = "a

我使用Stream.of将两个字符串值与分隔符“:”连接起来,其中一个可以为null,但当我将其检索到字符串数组时,我希望该数组中有固定数量的元素。我想知道字符串数组中哪一个是空的。 例如,我使用

Stream.of("abc", "def", "ghi", null)
            .collect(Collectors.joining(":"));
它将是“abc:def:ghi:null”。然后将其拆分为字符串数组,我使用

final String[] strings = "abc:def:ghi:null".split(":");

但是字符串[3]是“null”而不是null。有没有办法将“null”转换为null值?

您应该将
null
映射作为后处理来处理:

String[] strings =  "abc:def:ghi:null".split(":");
strings = Arrays.stream(strings).map(s-> s.equals("null")? null : s).toArray(String[]::new);
System.out.println(strings[3] == null);
打印
true


请注意,这里您不知道流中的原始位置是否使用了
null
“null”
字符串,因为一旦加入字符串,就无法区分它们

您应该将
null
映射处理为后处理:

String[] strings =  "abc:def:ghi:null".split(":");
strings = Arrays.stream(strings).map(s-> s.equals("null")? null : s).toArray(String[]::new);
System.out.println(strings[3] == null);
打印
true

请注意,这里您不知道流中的原始位置是否使用了
null
“null”
字符串,因为一旦加入字符串,就无法区分它们

字符串
“null”
不是
null
。您需要筛选结果:

final String[] strings = Arrays.stream("abc:def:ghi:null".split(":")).filter(str -> str.equals("null")).toArray(String::new);
编辑:

对不起,我读错了。如果要将
“null”
映射到
null
,只需:

final String[] strings = Arrays.stream("abc:def:ghi:null".split(":")).map(str -> str == "null" ? null : str).toArray(String[]::new);
字符串
“null”
不是
null
。您需要筛选结果:

final String[] strings = Arrays.stream("abc:def:ghi:null".split(":")).filter(str -> str.equals("null")).toArray(String::new);
编辑:

对不起,我读错了。如果要将
“null”
映射到
null
,只需:

final String[] strings = Arrays.stream("abc:def:ghi:null".split(":")).map(str -> str == "null" ? null : str).toArray(String[]::new);

如果一个值是合法的
“null”
,会发生什么情况?例如,有些人的名字是
Null
。如果一个值是合法的
“Null”
,会发生什么?例如,有人叫
Null
。如果我使用字符串[3],这将导致IndexOutOfBounds。我想知道最后一个元素的值,Null或非Null。对,我已经更正了答案,我需要更好地睡眠,我在阅读方面有问题:)你确定可以在Java中使用
str==“Null”
?它们可能不是同一个对象,即使它们是相同的值。好吧,也许equals会更一致,但据我所知,
字符串
s被插入,因此操作符
==
equals
方法具有相同的效果。如果我使用字符串[3],这将导致索引自动边界,我想知道最后一个元素的值,可以是null,也可以是non-nullRight,我已经更正了答案,我需要更好地睡眠,我在阅读时遇到了问题:)你确定可以在Java中使用
str==“null”
?它们可能不是同一个对象,即使它们是相同的值。好吧,也许equals会更一致,但据我所知,
字符串
s被插入,因此操作符
=
具有与
equals
方法相同的效果。