今までは、重複不可のリストくらいに思っていましたが、これよく見ると、演算可能な集合を実装したクラスなんですね。
たとえば、
- 足し算:addAll(Collection<? extends E> c)
- 引き算:removeAll(Collection<?> c)
- AND:retainAll(Collection<?> c)
- OR:=足し算
という集合同士の演算が可能です。組み合わせればXORとかも作れそうですね(addAll→retainAll→removeAll)。
そして集合に対する評価として
そして集合に対する評価として
- ALL:containsAll(Collection<?> c) とcontains(Object o)
- ANY:!Collections.disjoint(Collection<?> c1, Collection<?> c2)
なんでANY(いずれかが一致)がないんだろう。。。
と思ったら、Collectionsにdisjoint(Collection<?> c1, Collection<?> c2) というメソッドがあります。
このメソッドは、引数の2つのコレクションを比較し同じものがない場合trueを返します。
つまりその結果をNotすれば、containsAnyになる。ということですね。
と思ったら、Collectionsにdisjoint(Collection<?> c1, Collection<?> c2) というメソッドがあります。
このメソッドは、引数の2つのコレクションを比較し同じものがない場合trueを返します。
つまりその結果をNotすれば、containsAnyになる。ということですね。
0 件のコメント:
コメントを投稿