Map<Object,List<Instance>> collect = list.
.util.
.util.
.
Stream多线程并行数据处理
将一个顺序执行的流转变成一个并发的流只要调用 parallel()方法
public static long parallelSum(long n){
return
Stream.iterate(1L, i -&amp;amp;amp;amp;gt; i +1).limit(n).parallel().reduce(0L,Long::sum);
JAVA8 操作List<Map<String,Object>> 按照某个KEY进行分组,然后合并Map数据案例
public static List<Map<String, Object>> mergeDataList(List<Map<String, Object>> mergeList,String mergeKey){
Set<String> set = new HashSet<>
可以使用Java 8的Stream API来实现这个功能。首先,我们需要通过类型对数据进行分组,可以使用Collectors.groupingBy()方法实现。然后,我们可以使用Map.keySet()方法获取所有键的集合,即类型集合。最后,我们可以使用flatMap()和collect()方法将每个类型的id集合合并为一个集合。以下是示例代码:
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Data> dataList = Arrays.asList(
new Data("type1", 1),
new Data("type2", 2),
new Data("type1", 3),
new Data("type3", 4),
new Data("type2", 5)
Map<String, List<Integer>> groupedData = dataList.stream()
.collect(Collectors.groupingBy(Data::getType, Collectors.mapping(Data::getId, Collectors.toList())));
List<Integer> idList = groupedData.keySet().stream()
.flatMap(key -> groupedData.get(key).stream())
.collect(Collectors.toList());
System.out.println(idList);
class Data {
private String type;
private int id;
public Data(String type, int id) {
this.type = type;
this.id = id;
public String getType() {
return type;
public int getId() {
return id;
输出结果为:
[1, 3, 2, 5, 4]
其中,Data类用于封装数据,包括类型和id两个属性。首先,我们定义了一个包含5个Data对象的列表dataList作为示例数据。然后,我们使用Stream API对数据进行分组,将相同类型的数据分为一组,并将每组数据的id集合收集到一个列表中。最后,我们使用flatMap()方法将每个类型的id列表合并为一个列表,并使用collect()方法收集结果到一个列表中。