2つのArrayListから共通の値を削除するにはどうしたらいいですか? は、私は誰もが私を助けてもらえ2つの配列リストから共通の値を削除する方法
ArrayListFinal= [1,6,7]
として結果を持っていると思い
ArrayList1= [1,2,3,4]
ArrayList1= [2,3,4,6,7]
以下のように私は2つのArrayListを持って考えることができますか?ここで
2つのArrayListから共通の値を削除するにはどうしたらいいですか? は、私は誰もが私を助けてもらえ2つの配列リストから共通の値を削除する方法
ArrayListFinal= [1,6,7]
として結果を持っていると思い
ArrayList1= [1,2,3,4]
ArrayList1= [2,3,4,6,7]
以下のように私は2つのArrayListを持って考えることができますか?ここで
は、タスクを達成するために従うことができるアルゴリズムです:
Javaコレクションあなたの結果を得るaddAll
、removeAll
、およびretainAll
をサポートしています。労働組合、交差点を構築するためのretainAll
、および減算のためremoveAll
、like thisを構築するためにaddAll
を使用します。
// Make the two lists
List<Integer> list1 = Arrays.asList(1, 2, 3, 4);
List<Integer> list2 = Arrays.asList(2, 3, 4, 6, 7);
// Prepare a union
List<Integer> union = new ArrayList<Integer>(list1);
union.addAll(list2);
// Prepare an intersection
List<Integer> intersection = new ArrayList<Integer>(list1);
intersection.retainAll(list2);
// Subtract the intersection from the union
union.removeAll(intersection);
// Print the result
for (Integer n : union) {
System.out.println(n);
}
SetList<Integer> A = new SetList<Integer>();
A.addAll({1,2,3,4});
SetList<Integer> B = new SetList<Integer>();
B.addAll({2,3,4,6,7});
Integer a = null;
for (int i=0; i<A.size(); i++)
{
a = A.get(i);
if (B.contains(a)
{
B.remove(a);
A.remove(a);
i--;
}
}
SetList<Integer> final = new SetList<Integer>();
final.addAll(A);
final.addAll(B);
// final = { 1, 6, 7 }
あなたが実際にSymmetric Differenceを求めています。
List<Integer> aList = new ArrayList<>(Arrays.asList(1, 2, 3, 4));
List<Integer> bList = new ArrayList<>(Arrays.asList(2, 3, 4, 6, 7));
// Union is all from both lists.
List<Integer> union = new ArrayList(aList);
union.addAll(bList);
// Intersection is only those in both.
List<Integer> intersection = new ArrayList(aList);
intersection.retainAll(bList);
// Symmetric difference is all except those in both.
List<Integer> symmetricDifference = new ArrayList(union);
symmetricDifference.removeAll(intersection);
System.out.println("aList: " + aList);
System.out.println("bList: " + bList);
System.out.println("union: " + union);
System.out.println("intersection: " + intersection);
System.out.println("**symmetricDifference: " + symmetricDifference+"**");
プリント:
aList: [1, 2, 3, 4]
bList: [2, 3, 4, 6, 7]
union: [1, 2, 3, 4, 2, 3, 4, 6, 7]
intersection: [2, 3, 4]
**symmetricDifference: [1, 6, 7]**
返信ありがとうございました...それは私が探していたものです:) :) – Gautam
@OldCurmudgeon [1、2、3、4,6,7]のような出力が必要な場合はどうすればいいですか? –
@ KK_07k11A0585 - それは '対称差分'と '交差点'の '合併 'です。 – OldCurmudgeon
あなたはこのようなものを使用することができます:あなたがあなたの記事でそれらを説明するように、私はちょうど2つのArrayListを埋め、と私はそれらの両方にチェックを
ArrayList <Integer> first = new ArrayList <Integer>();
ArrayList <Integer> second = new ArrayList <Integer>();
ArrayList <Integer> finalResult = new ArrayList <Integer>();
first.add(1);
first.add(2);
first.add(3);
first.add(4);
second.add(2);
second.add(3);
second.add(4);
second.add(6);
second.add(7);
for (int i = 0; i < first.size(); i++){
if (!second.contains(first.get(i))){
finalResult.add(first.get(i));
}
}
for (int j = 0; j < second.size(); j++){
if (!first.contains(second.get(j))){
finalResult.add(second.get(j));
}
}
を明確な要素については、そのような要素が見つかった場合は、finalResult ArrayListに追加します。
私はそれはあなたを助けることを願っています:)
その後、私たちはあなたを助けるでしょう、それを試してみてください。 –
共通の要素を削除したい場合 – SRy
ヒント:リストのAPIを読むと、あなた自身で問題を解決できます。 – Sanchit