簡體   English   中英

從多個列表中的相等對象聚合列表

[英]Aggregate List from equal objects in multiple Lists

我試圖創建一個List<Object> aggregated基於List<Object> pool1List<Object> pool2 這里主要關注的是明顯的性能,因為我們要在每一個對象進行比較pool1在每個對象pool2 List是否是最佳選擇?

上面的錯誤代碼版本:

List<Object> pool1 = new ArrayList<>();
List<Object> pool2 = new ArrayList<>();
List<Object> matchingObjects = new ArrayList<Object>();
for (Object p1 : pool1) {
    for (Object p2 : pool2) {
        if (p1.equals(p2)) {
            matchingObjects.add(p1);
        }
    }
}

retainAll將在兩個列表之間提供一個common元素

  pool1.retainAll(pool2);
  //pool1 contains elements common between two lists

如果您想要一個合理的常用元素列表,請按照以下過程進行操作

List<Object> matchingObjects =  (ArrayList<Object>)pool1.clone();
matchingObjects.retainAll(pool2); // now matchingObjects will contain all the common elements

暫無
暫無

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

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