List<Map> distinctList = sPage.stream().collect(Collectors.collectingAndThen( Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(sPage->sPage.get("Material_Name")))), ArrayList::new ));
时间: 2023-06-19 18:07:52 浏览: 142
这段代码使用了Java 8中的Stream API,它的作用是对一个Map类型的List进行去重。具体来说,它使用了TreeSet作为去重的中间容器,TreeSet是一个有序的集合,它会根据传入的Comparator对象对元素进行排序。这里的Comparator.comparing方法传入了一个Lambda表达式,表示按照Map中的"Material_Name"字段进行排序。这样,TreeSet中的元素就是按照"Material_Name"字段去重后的有序集合。
接着,使用collectingAndThen方法将TreeSet转换为ArrayList类型的List,并返回去重后的List。collectingAndThen方法接受两个参数,第一个参数是一个Collector类型的对象,它用来对Stream中的元素进行收集操作;第二个参数是一个Function类型的对象,它用来将收集后的结果转换为最终的类型。这里将TreeSet类型的结果转换为ArrayList类型的结果,达到了去重的目的。
阅读全文