String连接空值并检索java的空值

问题描述 投票:0回答:2

我正在使用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值?

java arrays regex java-8 stream
2个回答
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便无法区分它们。


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);
© www.soinside.com 2019 - 2024. All rights reserved.