java 两个list比较,id不同则合并
时间: 2023-08-21 20:07:34 浏览: 40
可以使用两个for循环遍历两个List,然后根据ID判断是否需要合并。以下是示例代码:
```java
List<Item> list1 = new ArrayList<>();
List<Item> list2 = new ArrayList<>();
// 添加数据到list1和list2
for (Item item1 : list1) {
for (Item item2 : list2) {
if (item1.getId() != item2.getId()) {
// 如果ID不同,则合并
list1.add(item2);
}
}
}
// 合并后的数据在list1中
```
其中,Item是一个自定义类,需要实现getId()方法用于获取ID。需要注意的是,在循环中修改List可能会导致ConcurrentModificationException异常,可以使用迭代器或者新建一个List来存储合并后的数据。
相关问题
java 把两个对象集合相同的id数据不同值合并
可以使用 Java 8 中的 Stream API 和 Collectors 工具类来实现。首先,将两个对象集合合并成一个集合,然后使用 groupingBy 方法按照 id 进行分组,最后使用 reducing 方法将相同 id 的数据进行合并。具体实现可以参考以下代码:
List<Object> list1 = new ArrayList<>();
List<Object> list2 = new ArrayList<>();
// 添加数据到 list1 和 list2 中
List<Object> mergedList = Stream.concat(list1.stream(), list2.stream())
.collect(Collectors.toList());
Map<Integer, Object> resultMap = mergedList.stream()
.collect(Collectors.groupingBy(Object::getId,
Collectors.reducing((o1, o2) -> {
o1.setValue(o1.getValue() + o2.getValue());
return o1;
})));
List<Object> resultList = new ArrayList<>(resultMap.values());
java 把两个对象集合相同的id数据合并
可以使用Java Stream API中的distinct()方法去除重复的id,然后使用addAll()方法将两个集合合并。具体代码实现可以参考以下示例:
List<Object> list1 = new ArrayList<>();
List<Object> list2 = new ArrayList<>();
// 添加数据到list1和list2中
List<Object> mergedList = Stream.concat(list1.stream(), list2.stream())
.distinct()
.collect(Collectors.toList());