多个list合并 group by
时间: 2023-10-24 18:28:34 浏览: 69
在Java 8的Stream中,我们可以使用`groupingBy`方法进行多字段分组,然后使用`Collectors.toList()`方法将多个List合并到一个List中。下面是一个示例代码:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
// 假设有两个List,分别存放了学生的姓名和年龄
List<String> names = new ArrayList<>();
names.add("张三");
names.add("李四");
names.add("王五");
List<Integer> ages = new ArrayList<>();
ages.add(18);
ages.add(20);
ages.add(22);
// 使用Stream进行多字段分组,将姓名和年龄合并到一个List中
Map<String, List<Object>> result = names.stream()
.collect(Collectors.groupingBy(name -> name, Collectors.mapping(name -> name, Collectors.toList())))
.entrySet()
.stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
entry -> {
List<Object> list = new ArrayList<>(); list.addAll(entry.getValue());
list.addAll(ages.stream().filter(age -> names.get(ages.indexOf(age)).equals(entry.getKey())).collect(Collectors.toList()));
return list;
}
));
// 输出结果
result.forEach((name, list) -> System.out.println(name + ": " + list));
}
}
```
这段代码中,我们首先使用`groupingBy`方法将姓名进行分组,然后使用`Collectors.mapping`方法将姓名映射到一个新的List中。接着,我们使用`entrySet`方法将分组后的结果转换成Stream,然后使用`Collectors.toMap`方法将姓名和年龄合并到一个List中。最后,我们使用`forEach`方法输出合并后的结果。
希望这个示例对您有所帮助!<span class="em">1</span>
#### 引用[.reference_title]
- *1* [Java8 stream 中利用 groupingBy 进行多字段分组求和案例](https://download.csdn.net/download/weixin_38692928/12821045)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)