1.removeif
removeIf是Java8 Collecttion的一个默认方法;删除满足给定谓词的这个集合的所有元素
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.addAll(Arrays.asList(10, 9, 8, 7, 6, 5, 4, 3, 2, 1));
//Java8遍历和删除只有一短行就实现了
list.removeIf(value -> value % 2 == 0);
System.out.println(list);
}
2.filter
filter都产生一个新的StatelessOp,也就新的流,通过opWrapSink不断匹配条件,当为false时则标记此流元素可过滤,生成新的List,不能直接操作原List
public static void main(String[] args) {
List<Integer> list2 = new ArrayList<>();
list2.addAll(Arrays.asList(10, 9, 8, 7, 6, 5, 4, 3, 2, 1));
//java8这里的遍历和删除只有一短行就实现了 代码简洁,高效,线程安全。
list2 = list2.stream().filter(value -> value % 2 != 0).collect(Collectors.toList());
System.out.println(list);
}
removeIf和filter方法都能达到过滤/删除元素的作用。
removeIf是条件为true则过滤此元素,false则保留。而filter则是条件为false过滤此元素,而true则保留。
因为removeIf返回的是boolean,而filter是个intermediate operation
,需要terminal operation
最终来处理流,如果只是单单只做删除/过滤操作, removeIf会快些。