Java 去除 String[] 数组中的 null(空值)和 ""(空字符串)

7,060 阅读1分钟

最近对 Lambda 表达式有些兴趣,然后项目中有处理文件中数据空值和空字符串的操作,就想起来使用 Lambda 表达式中的方法进行去除,当然也可以使用常规循环再删除的操作。

一. Lambda 去除数组中的空字符串(""), 使用 Lambda 表达式仅仅一行代码就可以完成。下面是分别输出数组 String[] 和列表 List<>.

/**
 * 例:源数组
 */
String[] arr = {"2", "3", "", "34", "11", "", "", "6"};

/**
 * 去除 String[] 数组中的空字符串("")
 * @param arr 源数组
 * @return 操作后的新数组 String[]
 */
public String[] removeArraysEmpty(String[] arr) {
    return Arrays.stream(arr).filter(s -> !"".equals(s)).toArray(String[]::new);
}

/**
 * 去除 String[] 数组中的空字符串("")
 * @param arr 源数组
 * @return 操作后的新列表 List<>
 */
public List<String> removeArraysEmpty(String[] arr) {
    return Arrays.stream(arr).filter(s -> !"".equals(s)).collect(Collectors.toList());
}

控制台输出结果都是:[2, 3, 34, 11, 6]

二. Lambda 去除数组中的空值(null),下面是分别输出数组 String[] 和列表 List<>.

/**
 * 例:源数组
 */
String[] arr = {"2", "3", null, "34", "11", null, null, "6"};

/**
 * 去除 String[] 数组中的空值(null)
 *
 * @param arr 源数组
 * @return 操作后的新数组 String[]
 */
public String[] removeArraysEmpty(String[] arr) {
    return Arrays.stream(arr).filter(Objects::nonNull).toArray(String[]::new);
}

/**
 * 去除 String[] 数组中的空值(null)
 * @param arr 源数组
 * @return 操作后的新列表 List<>
 */
public List<String> removeArraysEmpty(String[] arr) {
    return Arrays.stream(arr).filter(Objects::nonNull).collect(Collectors.toList());
}

控制台输出结果都是:[2, 3, 34, 11, 6]