簡體   English   中英

Java對象列表的並集和交集

[英]Union and Intersection for List of Objects in Java

對象1列表

public class ActiveType {
    protected String serviceCategoryCode;
    protected String serviceOcc;
    protected String serviceCode;
    protected String to;
    protected String free;
}

對象2清單

public class PendingType {
    protected String worNumber;
    protected String serviceCode;
    protected String serviceOcc;
    protected String from;
    protected String to;
}

有兩個對象列表。

1. List<ActiveType>
2. List<PendingType>

如果兩個列表的服務代碼匹配,我必須創建一個新列表。 還有另一個列表,其中同時包含剩余對象(ActiveTpe + PendingType)。

如何在Java中實現對象列表的並集和交集?

使用contains(Object o)。 遍歷列表,如果當前對象包含在第二個列表中,則將其保存在稱為交集列表的第三個列表中。 完成交集后,可以通過使用remove(Object o)從交集列表中的兩個初始列表中刪除所有對象來進行並集。 然后,只需使用交集列表的元素以及初始列表的左側創建一個新列表,即可獲得並集。 另外,如果以后仍需要初始列表,則可能要保存初始列表。

應用包含到列表的當前元素。 如果您有list1,list 2和一個新的空list3,則:

 for (Object x:list1)
     if (list2.contains(x))
          list3.add(x);

一旦for循環完成,list3將具有從list1和list2的交集獲得的所有元素。

如果ActiveTypePendingType可以通過以下共享屬性共享超類:

public class SuperType {
    protected String serviceCode;
    protected String serviceOcc;
}

然后創建並填充Set<? extends SuperType> Set<? extends SuperType>將產生交集。 當然, SuperTypeequals()必須基於serviceCode

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM