Stream流过滤嵌套的List集合中值全为空的list
今天遇到一个问题,嵌套的list中内部有list值全为"",要把他们过滤掉,搜到的方法都是使用for循环对值挨个判断,效率太低了。使用Stream流能快很多,写了个demo。记录一下,第一次写,勿喷
public static void main(String[] args) {
//创建一个嵌套的list
List<List<String>> lists = new ArrayList<>();
for (int j = 0; j < 10; j++) {
List<String> stringList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
if (j==0){
stringList.add("有值");
}
else{
stringList.add("");
}
}
lists.add(stringList);
}
//输出输出新建的嵌套list
System.out.println(lists);
System.out.println("---------------------------------------------------分界线-------------------------------------------------------------");
//如果用isEmpty来判断的话是判断不出来的
for (List<String> list : lists) {
System.out.println(list.isEmpty());
}
System.out.println("---------------------------------------------------分界线-------------------------------------------------------------");
//这里是使用流判断内部的list值是否全为空
for (List<String> list : lists) {
System.out.println(list.stream().allMatch(s1 -> s1.equals("")));
}
System.out.println("---------------------------------------------------分界线-------------------------------------------------------------");
//过滤后需要使用一个list来接收,流操作不会改变原本集合的内容
lists = lists.stream().filter(strings -> strings.stream().allMatch(s1 -> !s1.equals(""))).collect(Collectors.toList());
//输出对比一下开始的
System.out.println(lists);
}
直接贴结果图对比吧

本文探讨了如何使用Java Stream流和Lambda表达式来处理嵌套List的判断与过滤操作。通过实例展示了如何有效地过滤嵌套List中的元素,提供了一种简洁的编程方式。

3809

被折叠的 条评论
为什么被折叠?



