今天工作偶然碰到需要根据某一属性过滤一个list集合,经过查找看到了这种stream流的过滤方式,感觉还是有点意思,以后也会用到,特此记录一下
ArrayList<IcsCloudDTO> collect3 = icsCloudDTOS.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->
new TreeSet<>(Comparator.comparing(item->item.getBrandModelId()))), ArrayList::new));该方法主要是将集合放在TreeSet中,并且传入一个根据某个属性进行比较的比较器,最终将TreeSet放入构造器中生成一个新的list。
Collectors.collectingAndThen方法是对结果集进行收集后进行下一步处理,可以点进去看一下方法传参
public static<T,A,R,RR> Collector<T,A,RR> collectingAndThen(Collector<T,A,R> downstream,
Function<R,RR> finisher) 两个参数,一个Collector接口的子类,一个Function函数,就很清晰了,Function函数:R apply(T t),调用ArrayList的有参构造。
版权声明:本文为m0_52796363原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。