1

次の問題の解決策を見つけようとしています。データベースから値を取得する 4 つの異なる ArrayList があります。サイズは 0 (含む) から任意の値までです。各リストのサイズと値も異なる場合があります。私が効果的にやろうとしているのは、次のとおりです。0以外のすべてのサイズリストを比較し、それらに共通の整数があるかどうか、およびそれらの値が何であるかを確認します。

何か案は?ありがとうございました!

4

4 に答える 4

6

空の整数を除いて、すべてに共通の整数のコレクションが必要な場合:

List<List<Integer>> lists = ...
Collection<Integer> common = new HashSet<Integer>(lists.get(0));
for (int i = 1; i < lists.size(); i++) {
   if (!lists.get(i).isEmpty()) 
     common.retainAll(lists.get(i));
}

最後に、commonそれらすべてに共通の整数が含まれます。

于 2012-04-08T14:21:40.700 に答える
2

ArrayList オブジェクトで集合交差操作を使用できます。

このようなもの:

List<Integer> l1 = new ArrayList<Integer>();

l1.add(1);
l1.add(2);
l1.add(3);

List<Integer> l2= new ArrayList<Integer>();
l2.add(4);
l2.add(2);
l2.add(3);

List<Integer> l3 = new ArrayList<Integer>(l2);
l3.retainAll(l1);

ここで、l3 は l1 と l2 の間で共通の要素のみを持つ必要があります。

于 2012-04-08T14:26:49.857 に答える
2

Apache Commons を使用して 2 つのコレクションの共通部分を取得したい場合がありますCollectionUtils.intersection()...

交差を繰り返し生成し、完了時に空でない場合は、共通の要素があり、この結果のコレクションにあります。

空のリストについて: 0 かどうかを確認し、size()0 の場合はこのリストをスキップします。

于 2012-04-08T14:23:42.400 に答える