java - JAVA中两个列表的交集

标签 java list arraylist collections stream

我正在尝试获取JAVA中两个列表之间的交集,请找到下面的列表

列表 1:

List<EligViewEventSubject> list1=  new ArrayList<>();

list1=   [EligViewEventSubject [event=EOD, subjectTypeCd=HOLDINGS, region=IA], EligViewEventSubject [event=EOD, subjectTypeCd=ASSETS, region=IA]]

列表 2:

List<EligViewEventSubject> list2=  new ArrayList<>();

list2 = [EligViewEventSubject [event=EOD, subjectTypeCd=ASSETS, region=IA]]

上述结果应如下所示

List<EligViewEventSubject> resultList =  new ArrayList<>();

resultList = [EligViewEventSubject [event=EOD, subjectTypeCd=ASSETS, region=IA]]

简而言之,我想要单独的匹配项(交叉点)

我尝试过以下方法:

List<EligViewEventSubject> unionList = new ArrayList<>(list1);
        unionList.addAll(list2);

List<EligViewEventSubject> intersectionList = new ArrayList<>(list1);
        intersectionList.retainAll(list2);

我得到的联盟列表为:

[EligViewEventSubject [event=EOD, subjectTypeCd=HOLDINGS, region=IA], EligViewEventSubject [event=EOD, subjectTypeCd=ASSETS, region=IA], EligViewEventSubject [event=EOD, subjectTypeCd=ASSETS, region=IA]]

交集是[]

请分享您对此的想法。

最佳答案

请引用此问题,因为该问题已经得到解答。 Intersection and union of ArrayLists in Java

总而言之,您可以在 java 中获取两个数组列表的交集,如下所示:

public <T> List<T> intersection(List<T> list1, List<T> list2) {
    List<T> list = new ArrayList<T>(); 

    for (T t : list1){
       if(list2.contains(t)){
           list.add(t); 
       } 
    } 

   return list; 
}

关于java - JAVA中两个列表的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60251118/

相关文章:

java - 使用Maven定制并构建另一个Maven项目

Python:如何通过 randChoice 选择另一个变量来打印一个变量?

python - 每次值列表中的符号变化时计算差异

Android-(Firebase)如何以不同方式设置 ArrayList 的结构?

java - firebase实时数据库验证规则

java - 如何将图库图像作为输入流

java - 如何在 Java 中组织图形和绘图

java - Java 中的撤消和重做实现

java - 从 java 中的结果集中返回 arraylist 的 arraylist

java - 初始化字符数组时出现精度损失错误