JAVA中两个列表的交集

问题描述 投票:0回答:1

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

清单1:列表list1 = new ArrayList <>();

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

清单2:列表list2 = new ArrayList <>();

list2 = [EligViewEventSubject [事件= EOD,subjectTypeCd =资产,区域= IA]]

以上结果应与下面类似

List resultList = new ArrayList <>();

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

总之我只想匹配的对象(交叉点)

我在下面尝试过,

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

列表交集列表=新的ArrayList <>(list1);junctionList.retainAll(list2);

[我得到的联合列表为[EligViewEventSubject [event = EOD,subjectTypeCd = HOLDINGS,region = IA],EligViewEventSubject [event = EOD,subjectTypeCd = ASSETS,region = IA],EligViewEventSubject [event = EOD,subjectTypeCd = ASSETS,region = IA]]

交叉点是[]

请分享您对此的想法。

java list arraylist collections stream
1个回答
0
投票

请参考这个问题,因为已经回答了。 Intersection and union of ArrayLists in Java

总而言之,您可以像这样在Java中获得两个arraylist的交集:

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; 
}
© www.soinside.com 2019 - 2024. All rights reserved.