Java Streams:将列表分组到地图地图
发布时间:2020-12-14 17:48:33 所属栏目:Java 来源:网络整理
导读:我如何使用 Java Streams执行以下操作? 假设我有以下类: class Foo { Bar b;}class Bar { String id; String date;} 我有一个列表 Foo并且我想将其转换为Map Foo.b.id,Map Foo.b.date,Foogt ;. I.e:首先由Foo.b.id组合,然后由Foo.b.date组合. 我正在努力
我如何使用
Java Streams执行以下操作?
假设我有以下类: class Foo { Bar b; } class Bar { String id; String date; } 我有一个列表< Foo>并且我想将其转换为Map< Foo.b.id,Map< Foo.b.date,Foo> ;. I.e:首先由Foo.b.id组合,然后由Foo.b.date组合. 我正在努力使用以下两步法,但第二个甚至不编译: Map<String,List<Foo>> groupById = myList .stream() .collect( Collectors.groupingBy( foo -> foo.getBar().getId() ) ); Map<String,Map<String,Foo>> output = groupById.entrySet() .stream() .map( entry -> entry.getKey(),entry -> entry.getValue() .stream() .collect( Collectors.groupingBy( bar -> bar.getDate() ) ) ); 提前致谢. 解决方法
您可以一次分组您的数据,假设只有不同的Foo:
Map<String,Foo>> map = list.stream() .collect(Collectors.groupingBy(f -> f.b.id,Collectors.toMap(f -> f.b.date,Function.identity()))); 使用静态导入保存一些字符: Map<String,Foo>> map = list.stream() .collect(groupingBy(f -> f.b.id,toMap(f -> f.b.date,identity()))); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |