List<MemberSolutionVo> list = new ArrayList<>();
...
Map<String, MemberSolutionVo> collect = list.stream().collect(
Collectors.groupingBy(MemberSolutionVo::getUuid,
Collectors.collectingAndThen(Collectors.reducing((c1, c2) -> c1.getSolutionId().intValue() > c2.getSolutionId().intValue() ? c1 : c2),
Optional::get)));
list = new ArrayList<>(collect.values());
// 根据结果表唯一索引分组,取中间表重复最新一条
Map<String, List<MidDeliveryAreaConfigFresh>> mapGroup = list.stream().co...
最终实现的效果是返回一个最终的list,里面的每一个实体值是上面所有字段合并后的值(provinceId、field1、field2、field3、field4、field5、field6、field7、field8、field9)A接口返回List里面有值的的字段为:provinceId、field1、field2、field3。B接口返回List里面有值的的字段为:provinceId、field4、field5、field6。数据出自许多接口数据,需要将几个接口数据根据省份id进行分组合并。
list集合分组后按时间排序取最近的一条记录
集合按照id进行分组后,按照时间顺序取最近一条记录
List<Documnet> list = new ArrayList();
Map<String, Document> map = list.parallelStream().collect(Collectors.groupingBy(data -> data.getString("id"),
Collectors.colle
(使用java8 stream groupingBy操作, 基于city 和name 实现多次分组)/*** 自定义重复key 规则* @return*/super T,?;});希望对大家有帮助 下期再见呦~Java8 Stream 之groupingBy 分组讲解_在奋斗的大道的博客-CSDN博客。
JDK1.8推出的stream流能极大的简化对集合的操作,让代码更美观,老规矩,直接上代码。实际业务中根据业务合理利用stream流能够很大程度的简化代码,但是这种写法在出现bug的时候排查较为复杂,建议不要在使用stream流的时候在其中写太复杂的逻辑。Java 8利用Comparator(比较器)和BinaryOperator(二元运算符)进行减少流中的元素。返回带有Optional数据的Collector(收集器)。在JavaDoc的方法语法如下。返回一个Optional类的收集器。我们需要传递。
public void test1(){
List<Map<String,Object>> list2 = new ArrayList<>();
Map<String,Object> map1 = new HashMap<>();
map1.put("region", "410185");
map1.put("positionText", "服务员");