我正在使用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”转换为空值?
答案 0 :(得分:2)
您应将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"
字符串,因为一旦加入String便无法区分它们。
答案 1 :(得分:2)
字符串"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);