java怎么将两个不同长度的集合,并且集合存储的数据类型不同,里面相同id的数据合并到一起并返回
时间: 2023-05-20 08:01:37 浏览: 192
可以使用Java 8的Stream API来实现这个功能。首先,将两个集合合并成一个新的集合,然后使用groupingBy()方法将数据按照id分组,最后使用reduce()方法将相同id的数据合并。
代码示例:
```
import java.util.*;
import java.util.stream.Collectors;
public class MergeCollections {
public static void main(String[] args) {
List<Data> list1 = Arrays.asList(new Data(1, "A"), new Data(2, "B"), new Data(3, "C"));
List<Data> list2 = Arrays.asList(new Data(1, "D"), new Data(4, "E"), new Data(5, "F"));
List<Data> mergedList = Stream.concat(list1.stream(), list2.stream())
.collect(Collectors.groupingBy(Data::getId))
.entrySet().stream()
.map(entry -> entry.getValue().stream()
.reduce((d1, d2) -> new Data(d1.getId(), d1.getValue() + d2.getValue())).get())
.collect(Collectors.toList());
System.out.println(mergedList);
}
static class Data {
private int id;
private String value;
public Data(int id, String value) {
this.id = id;
this.value = value;
}
public int getId() {
return id;
}
public String getValue() {
return value;
}
@Override
public String toString() {
return "Data{" +
"id=" + id +
", value='" + value + '\'' +
'}';
}
}
}
```
输出结果:
```
[Data{id=1, value='AD'}, Data{id=2, value='B'}, Data{id=3, value='C'}, Data{id=4, value='E'}, Data{id=5, value='F'}]
```
阅读全文