获取两个list<对象>没有的那部分 java实现
时间: 2023-08-18 07:09:58 浏览: 43
在Java中,获取两个List对象没有的那部分也可以使用类似的方法实现。以下是一个Java语言的示例代码:
```java
// 假设对象列表为objectList1和objectList2,对象有一个getKey()方法用于获取关键属性
Set<Object> keySet1 = objectList1.stream().map(Object::getKey).collect(Collectors.toSet());
Set<Object> keySet2 = objectList2.stream().map(Object::getKey).collect(Collectors.toSet());
Set<Object> diffSet = new HashSet<>(keySet1);
diffSet.removeAll(keySet2);
// 获取第一个列表中有,而第二个列表中没有的对象列表
List<Object> resultList = objectList1.stream().filter(obj -> diffSet.contains(obj.getKey())).collect(Collectors.toList());
```
请注意,这只是一个示例代码,具体实现方式还需要根据实际情况进行调整。另外,需要注意的是,该方法只适用于对象有唯一关键属性且该属性的取值不重复的情况。如果对象没有唯一关键属性或者属性取值可能重复,则需要根据实际情况进行调整。
相关问题
获取两个List<对象>没有的那部分 java实现
在Java中,获取两个List对象没有的那部分也可以使用类似的方法实现。以下是一个Java语言的示例代码:
```java
// 假设对象列表为objectList1和objectList2,对象有一个getKey()方法用于获取关键属性
Set<Object> keySet1 = objectList1.stream().map(Object::getKey).collect(Collectors.toSet());
Set<Object> keySet2 = objectList2.stream().map(Object::getKey).collect(Collectors.toSet());
Set<Object> diffSet = new HashSet<>(keySet1);
diffSet.removeAll(keySet2);
// 获取第一个列表中有,而第二个列表中没有的对象列表
List<Object> resultList = objectList1.stream().filter(obj -> diffSet.contains(obj.getKey())).collect(Collectors.toList());
```
请注意,这只是一个示例代码,具体实现方式还需要根据实际情况进行调整。另外,需要注意的是,该方法只适用于对象有唯一关键属性且该属性的取值不重复的情况。如果对象没有唯一关键属性或者属性取值可能重复,则需要根据实际情况进行调整。
获取两个list<对象>的交集
可以使用Java 8中的Stream API来获取两个List对象的交集,具体实现方式如下:
假设有两个List对象 list1 和 list2,它们存储着相同类型的元素,可以使用以下代码获取它们的交集:
```
List<Object> intersection = list1.stream()
.filter(list2::contains)
.collect(Collectors.toList());
```
上述代码中,首先将 list1 转换为 Stream 对象,然后使用 filter() 方法过滤出 list2 中包含的元素,最后将结果收集到一个新的List对象 intersection 中。
需要注意的是,这种方式获取的交集是基于对象的引用相等性进行比较的,因此要确保元素类型正确实现了 equals() 和 hashCode() 方法,否则可能无法得到正确的结果。