两个集合去重
List<GenTable> list1 = ...; // 一个列表包含在另一个中
List<GenTable> list2 = ...; // 第二个列表
List<GenTable> resultList = Stream.concat(list1.stream(), list2.stream())
.distinct()
.collect(Collectors.toList());
这里,我们首先使用Stream.concat()方法将两个列表合并成一个流,然后使用distinct()方法去除其中的重复元素,最后通过collect(Collectors.toList())将结果收集到一个新的列表中。这种写法更加简洁高效,并且应该可以在大多数情况下满足您的需求。
List<MyObject> distinctList = myList.stream()
.distinct()
.collect(Collectors.toList());
在这个例子中,我们先创建了一个列表myList,并填充了一些重复的 MyObject对象。使用stream()方法创建一个流,然后使用distinct()方法在流中去除重复元素。最后,使用collect()方法将去重后的结果收集回一个新的List中。
请注意,这里假设MyObject类正确地实现了equals() 方法和hashCode()方法。这对于去除重复元素是至关重要的,因为Stream API使用equals()方法来比较对象。
如果您需要根据某个属性来区分元素并去除重复元素,可以使用distinct()方法的重载版本,并提供一个由该属性生成的函数:
List<MyObject> distinctList = myList.stream()
.distinct(myObject -> myObject.getProperty())
.collect(Collectors.toList());