java对象的集合,用stream聚合成Map<Long,List<Long>>的形式
时间: 2024-03-13 20:23:28 浏览: 130
Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并
假设你有一个包含Java对象的List集合,其中每个对象都有一个long类型的id属性和一个long类型的value属性。你可以使用Java 8的Stream API将这个List集合转换为一个Map<Long,List<Long>>对象,其中Map的key是所有id属性的值,Map的value是该id对应的所有value属性的值构成的List。
下面是一个示例代码:
```
List<MyObject> list = // 初始化List集合
Map<Long, List<Long>> map = list.stream()
.collect(Collectors.groupingBy(MyObject::getId,
Collectors.mapping(MyObject::getValue, Collectors.toList())));
```
其中,MyObject是你定义的Java对象,getId()方法返回该对象的id属性值,getValue()方法返回该对象的value属性值。上述代码使用了Stream API中的groupingBy()方法和mapping()方法。groupingBy()方法根据id属性对Java对象进行分组,生成一个Map<Long, List<MyObject>>对象;mapping()方法将每个MyObject对象映射为它的value属性值,并将这些值收集到一个List<Long>对象中。最终生成的Map<Long,List<Long>>对象即为所需的结果。
阅读全文