将一个List<vo>转成map<String,List<vo>>
时间: 2023-07-09 21:49:12 浏览: 126
好的,你可以使用Java 8的Stream API将一个List\<VO>转换成Map<String, List<VO>>,其中VO是你自己定义的一个Java类,示例代码如下:
假设VO类中有一个属性名为key的String类型的属性,我们要根据key属性的值将VO对象分组并存储到Map中。
```
List<VO> list = Arrays.asList(new VO("a", 1), new VO("b", 2), new VO("c", 3),
new VO("a", 4), new VO("b", 5), new VO("a", 6));
Map<String, List<VO>> map = list.stream()
.collect(Collectors.groupingBy(VO::getKey));
```
这段代码首先使用Arrays.asList()方法创建了一个VO类型的List。然后使用Stream API的collect方法,结合Collectors.groupingBy()方法将List中的VO对象按照其key属性的值进行分组,最终得到一个Map<String, List<VO>>类型的结果,其中每个键都对应一个List,这个List中包含了原始List中所有和该键相同的VO对象。
相关问题
将一个List<vo>转成map<String,List<vo>>,其中map的key是由vo中的多个字段用-拼接而成
好的,你可以使用Java 8的Stream API将一个List\<VO>转换成Map<String, List<VO>>,其中Map的key由VO中的多个字段用"-"拼接而成,示例代码如下:
假设VO类中有两个属性,分别为key和value,我们要根据这两个属性的值将VO对象分组并存储到Map中,其中Map的key由key和value两个属性的值用"-"拼接而成。
```
List<VO> list = Arrays.asList(new VO("a", 1), new VO("b", 2), new VO("c", 3),
new VO("a", 4), new VO("b", 5), new VO("a", 6));
Map<String, List<VO>> map = list.stream()
.collect(Collectors.groupingBy(vo -> vo.getKey() + "-" + vo.getValue()));
```
这段代码首先使用Arrays.asList()方法创建了一个VO类型的List。然后使用Stream API的collect方法,结合Collectors.groupingBy()方法将List中的VO对象按照key和value属性的值进行分组,最终得到一个Map<String, List<VO>>类型的结果,其中每个键都由key和value属性的值用"-"拼接而成,这个键对应的List中包含了原始List中所有和该键相同的VO对象。
list<vo>转换成map<String,vo>
假设 `vo` 类中有一个名为 `id` 的属性,可以按照以下方式将 `list<vo>` 转换成 `map<String, vo>`:
```java
Map<String, vo> map = list.stream()
.collect(Collectors.toMap(vo::getId, Function.identity()));
```
这里使用了 Java 8 中的 Stream API,`vo::getId` 表示将每个 `vo` 对象的 `id` 属性作为 key,`Function.identity()` 表示将每个 `vo` 对象本身作为 value。注意,如果 `list<vo>` 中存在重复的 `id`,则会抛出 `IllegalStateException`。可以根据需要使用 `toMap` 的第三个参数来指定合并函数来处理这种情况。
阅读全文