【问题标题】:Intersection of two List in JAVA [duplicate]JAVA中两个列表的交集[重复]
【发布时间】:2020-05-31 17:11:50
【问题描述】:

我正在尝试在 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]]

交点是[]

请分享您对此的看法。

【问题讨论】:

    标签: java list arraylist collections stream


    【解决方案1】:

    请参考这个问题,因为这已经被回答了。 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; 
    }
    

    【讨论】:

    • 它再次返回一个空列表
    • @KiranSureshraaj 在 list.add(t) 和 if(list2.contains(t)) 上设置断点。看看为什么列表不包含该项目。
    • @KiranSureshraaj,请在此处复制您的完整代码(在代码块中,因此它被格式化为代码而不是文本)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2015-10-19
    • 2013-08-29
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    相关资源
    最近更新 更多