小工具知识网

当前位置: 首页 > 行业知识 > java比较两条list对象取差集,取重复元素

行业知识

java比较两条list对象取差集,取重复元素

2026-10-25 13:12:34 来源:互联网转载

**

()

取差集

**

方法一:使用循环嵌套遍历比较

()

一种常见的方法是通过嵌套循环遍历比较两个List对象中的元素。具体步骤如下:

遍历第一个List,对于每个元素,都在第二个List中进行遍历比较。如果第二个List中没有找到相同的元素,则将该元素加入到差集List中。返回差集List。
List list1 = Arrays.asList(1, 2, 3, 4, 5);List list2 = Arrays.asList(3, 4, 5, 6);List list = new ArrayList();for (Integer element : list1) {    boolean found = false;    for (Integer compareElement : list2) {        if (element.equals(compareElement)) {            found = true;            break;        }    }    if (!found) {        list.add(element);    }}System.out.println("差集为:" + list);

差集为:[1, 2]

当List较大时,性能可能会受到影响。

方法二:使用Java 8的Stream API

Java 8中引入的Stream API提供了一种更简洁的方式来处理集合数据。通过使用Stream的filter和collect方法,可以轻松地实现取差集的功能。

List list1 = Arrays.asList(1, 2, 3, 4, 5);List list2 = Arrays.asList(3, 4, 5, 6);List list = list1.stream()        .filter(element -> !list2.contains(element))        .collect(Collectors.toList());System.out.println("差集为:" + list);

差集为:[1, 2]

相比于方法一,使用Stream API可以更加简洁地实现取差集的功能,并且在处理大型List时性能更好。

方法三:使用Apache Commons Collections库

除了使用Java内置的方法,我们还可以借助第三方库来实现取差集的功能。Apache Commons Collections库提供了一个CollectionUtils类,其中包含了许多方便的集合操作方法。

List list1 = Arrays.asList(1, 2, 3, 4, 5);List list2 = Arrays.asList(3, 4, 5, 6);List list = (List) CollectionUtils.subtract(list1, list2);System.out.println("差集为:" + list);

取重复元素

方法一:使用HashSet

import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Set;public class ListUtils {    /**     * 找出两个List中的重复元素     * @param list1 第一个List     * @param list2 第二个List     * @return 重复的元素集合     */    public static  List findDuplicateElements(List list1, List list2) {        Set set1 = new HashSet(list1); // 将List1转换为Set,去除重复元素        Set duplicateSet = new HashSet();                for (T element : list2) { // 遍历List2的元素            if (set1.contains(element)) { // 如果Set1中包含List2的元素                duplicateSet.add(element); // 将重复的元素添加到重复元素的Set中            }        }                return new ArrayList(duplicateSet); // 将重复元素的Set转换回List并返回    }}

方法二:使用Stream API

import java.util.*;import java.util.stream.Collectors;public class Main {    public static void main(String[] args) {        List list1 = Arrays.asList(1, 2, 3, 4, 5);        List list2 = Arrays.asList(4, 5, 6, 7, 8);        // 将列表转换为Stream        Stream stream1 = list1.stream();        Stream stream2 = list2.stream();        // 找出两个Stream的重复元素        List commonElements = Stream.concat(stream1, stream2)                                             .distinct()                                             .collect(Collectors.toList());        // 打印出重复元素        System.out.println(commonElements);    }}

方法三:使用HashMap

import java.util.*;public class Main {    public static void main(String[] args) {        List list1 = Arrays.asList(1, 2, 3, 4, 5);        List list2 = Arrays.asList(4, 5, 6, 7, 8);        // 将列表转换为HashMap        Map map = new HashMap();        list1.forEach(i -> map.put(i, map.getOrDefault(i, 0) + 1));        list2.forEach(i -> map.put(i, map.getOrDefault(i, 0) + 1));        // 找出HashMap中值大于1的键,即为重复元素        List commonElements = map.entrySet().stream()                                         .filter(x -> x.getValue() > 1)                                         .map(Map.Entry::getKey)                                         .collect(Collectors.toList());        // 打印出重复元素        System.out.println(commonElements);    }}

转载:https://www.cnblogs.com/shuilangyizu/p/17596239.html

转载: https://www.jb51.net/program/302722bfi.htm

上一篇:腾讯服务器杀毒怎么关?

下一篇:苹果怎么下载印度服务器?