两个集合去重

两个集合去重
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());

扫描二维码,在手机上阅读!

发表评论

电子邮件地址不会被公开。 必填项已用*标注