在所有其他arraylists中获得arraylist项目的最快方法

时间:2012-08-26 15:47:58

标签: java arraylist inner-join

我正在寻找一种智能而快速的方法来获取所有其他arraylists中的多个arraylists(存储在hashmap中)的值。

E.g。 [a] = 1,2,3,4,5 [b] = 1,3 [c] = 3

结果= 3

在Java中实现这一目标的最快方法是什么?

3 个答案:

答案 0 :(得分:5)

您可以使用ArrayLists使用Collections.retainAll

list1.retainAll(list2);
list1.retainAll(list3);

但请记住,您将更改list1的内容。

答案 1 :(得分:3)

Google Guava中:

  // assuming you have List<List<?>> lists that is non-empty
  Set<?> result = Sets.newLinkedHashSet(lists.get(0));
  for (int i = 1; i < lists.size(); i++) {
    result.retainAll(ImmutableSet.copyOf(lists.get(i)));
  }

  return result;

答案 2 :(得分:0)

迭代它们,并将任何相同的词添加到新的arraylist中。

    List commons = new ArrayList();
    for(int i=0; i < list1.size() && i < list2.size(); i++) {
        Object list1val = list1.get(i);
        Object list2val = list2.get(i);
        if((list1val == null && list2val == null) ||
                (list1val != null && list1val.equals(list2val)))
                commons.add(list1val);
    }
}