用java 8 实现list 转成Map<Long, Map<Short, List<对象>>>
时间: 2023-10-24 16:36:51 浏览: 83
Java常用的强转类型,基本数据类型转换,JSONObject强转Map,JSONArray强转List(附源码)
好的,可以使用Java 8的Stream API和Collector来将一个列表转换成对应的Map。假设我们有如下的对象类:
```java
public class MyObject {
private Long id;
private Short type;
// 其他字段
// 构造函数、getter和setter方法省略
}
```
那么可以使用以下代码将一个`List<MyObject>`对象转换成对应的`Map<Long, Map<Short, List<MyObject>>>`对象:
```java
List<MyObject> objectList = ...; // 假设这是原始的列表
Map<Long, Map<Short, List<MyObject>>> map = objectList.stream()
.collect(Collectors.groupingBy(MyObject::getId, // 分组键1:id
Collectors.groupingBy(MyObject::getType))); // 分组键2:type
```
其中,`Collectors.groupingBy()`方法是一个分组操作的Collector,它可以将一个流按照指定的键进行分组,并返回对应的Map。因此,我们首先按照`id`进行第一次分组,得到一个`Map<Long, List<MyObject>>`对象;然后再按照`type`进行第二次分组,得到一个`Map<Short, List<MyObject>>`对象。最终的结果就是一个`Map<Long, Map<Short, List<MyObject>>>`对象。
需要注意的是,这种做法要求原始列表中的每个元素都有`id`和`type`字段,并且这两个字段的类型分别为`Long`和`Short`。如果你的实际需求与此不同,可以相应地修改上述代码。
阅读全文