如何使用Java 8 Stream替换二维String数组中的null为字符串Z
Java 8 Stream 实现代码
import java.util.Arrays; public class NullReplaceDemo { public static void main(String[] args) { String[][] userData = { { "User A", "A" }, { null, null }, { "User B", "B" } }; String[][] result = Arrays.stream(userData) .map(innerArr -> Arrays.stream(innerArr) .map(val -> val == null ? "Z" : val) .toArray(String[]::new) ) .toArray(String[][]::new); // 验证结果逻辑可删除 for (String[] row : result) { System.out.println(Arrays.toString(row)); } } }
实现逻辑说明
- 外层通过
Arrays.stream(userData)将二维数组转换为元素类型为String[]的流,遍历每一行一维数组 - 对每一行一维数组再次转流处理,用三元运算符判断元素是否为null,匹配则替换为字符串
"Z",否则保留原取值 - 内层流处理完成后通过
toArray(String[]::new)回收为一维字符串数组,外层流再回收为二维字符串数组,最终返回结果的格式和原数组完全一致 - 该实现不会修改原数组,返回的是独立的新数组,无副作用
运行上述代码的输出结果如下:
[User A, A] [Z, Z] [User B, B]
内容的提问来源于stack exchange,提问作者Tamil.S
相关产品推荐
相关产品推荐

