【发布时间】:2018-12-20 17:00:01
【问题描述】:
有下一张地图:
{
G1=[
User(id=1005, name=Jack, age=45),
User(id=1006, name=Carl, age=23),
User(id=1007, name=Thomas, age=20),
User(id=1008, name=Peter, age=19),
User(id=1009, name=John, age=47),
User(id=1010, name=Adrian, age=21),
User(id=1011, name=Mariah, age=18)
],
G2=[
User(id=1005, name=Alfred, age=23),
User(id=1006, name=Barack, age=22),
User(id=1007, name=Lee, age=36),
User(id=1008, name=Andrew, age=33),
User(id=1009, name=Sophia, age=22),
User(id=1010, name=Lauren, age=19),
User(id=1011, name=Mathias, age=33)
]
}
如何创建此地图:
{
47=[
User(id=1005, name=Jack, age=45),
User(id=1006, name=Carl, age=23),
User(id=1007, name=Thomas, age=20),
User(id=1008, name=Peter, age=19),
User(id=1009, name=John, age=47),
User(id=1010, name=Adrian, age=21),
User(id=1011, name=Mariah, age=18)
],
36=[
User(id=1005, name=Alfred, age=23),
User(id=1006, name=Barack, age=22),
User(id=1007, name=Lee, age=36),
User(id=1008, name=Andrew, age=33),
User(id=1009, name=Sophia, age=22),
User(id=1010, name=Lauren, age=19),
User(id=1011, name=Mathias, age=33)
]
}
其中新键是从用户列表中获取年龄属性最大值的结果。
在值中没有用户列表的地图中有效:
Original map: {G1=[45,23,20,19,47,21,18], G2=[23,22,36,33,22,19,33]}
Map<Integer, List<Integer>> newMap = mapa.entrySet().stream()
.collect(Collectors.toMap(e -> Collections.max(e.getValue()),
Map.Entry::getValue));
Result: {47=[45,23,20,19,47,21,18], 36=[23,22,36,33,22,19,33]}
但是通过用户列表,我可以在 Collector.toMap 中获取对象。
任何帮助将不胜感激。
【问题讨论】:
标签: java java-8 java-stream