私が作りたい最初のポイントは、Set
要素の重複を許可しないため、使用したほうがよいように思われるということです。つまり、次のことを行います。
Set<Long> ids = new HashSet<Long>();
ids.add(Long.valueOf(1));
ids.add(Long.valueOf(1));
System.out.println(ids.size());
の場合とは異なり1
、2
が出力されList
ます。
あなたが探している正確な操作はわかりませんが、必要な操作は 3 つあります。結合、交差、相対補数です。それらの正式な定義とベン図については、このウィキペディアのセット ページのセクションを参照してください。
連合
結果: と のすべての要素が にA
なりB
ますC
。
この操作を実行するには:
Set<Long> a = ... ;
Set<Long> b = ... ;
Set<Long> c = new HashSet<Long>(a);
c.addAll(b);
交差点
A
結果:との両方の要素のみB
が になりますC
。
この操作を実行するには:
Set<Long> a = ... ;
Set<Long> b = ... ;
Set<Long> c = new HashSet<Long>(a);
c.retainAll(b);
相対補体
結果:にあったものを除くC
すべての要素が含まれますA
B
この操作を実行するには:
Set<Long> a = ... ;
Set<Long> b = ... ;
Set<Long> c = new HashSet<Long>(a);
c.removeAll(b);
さらに、 a を aに変換するList
にはSet
:
List<Long> idsAsList = ... ;
Set<Long> idsAsSet = new HashSet<Long>(idsAsList);
配列を に変換するには、 があるか があるかSet
によって、異なる処理を行う必要があります(大文字に注意してください)。の場合、手動でコピーする必要があります。long[]
Long[]
long[]
long[] idsAsArray = ... ;
Set<Long> idsAsSet = new HashSet<Long>();
for (long l : idsAsArray) {
idsAsSet.add(Long.valueOf(l));
}
の場合はLong[]
、次を使用できますArrays.asList
。
Long[] idsAsArray = ... ;
Set<Long> ids = new HashSet<Long>(Arrays.asList(idsAsArray));