聚合列表来自多个列表中的相等对象

时间:2015-03-23 13:50:14

标签: java

我正在尝试根据List<Object> aggregatedList<Object> pool1创建List<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);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

retainAll会在两个列表之间提供common个元素

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

如果你想要一个共同元素的saparate列表而不是下面的过程

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