他のすべての配列リストにある複数の配列リスト (ハッシュマップに格納されている) の値のみを取得するスマートで高速な方法を探しています。
例 [a] = 1、2、3、4、5 [b] = 1、3 [c] = 3
結果 = 3
Javaでこれを達成する最速の方法は何ですか?
他のすべての配列リストにある複数の配列リスト (ハッシュマップに格納されている) の値のみを取得するスマートで高速な方法を探しています。
例 [a] = 1、2、3、4、5 [b] = 1、3 [c] = 3
結果 = 3
Javaでこれを達成する最速の方法は何ですか?
ArrayLists を使用してCollections.retainAllを使用できます。
list1.retainAll(list2);
list1.retainAll(list3);
ただし、 の内容を変更することに注意してくださいlist1
。
// 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;
それらを反復処理し、同一のものを新しい配列リストに追加します。
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);
}
}