ソート可能な(つまり、初期化後にコンパレータを使用して何度もソートする)重複のないJavaクラスコレクションを探しています。不透明で、たとえば既に存在する同じ値を持つ別のオブジェクトを追加するための ArrayList を防ぐコードを書くよりも純粋な解決策はありますか?
編集 1: 並べ替えに関する説明を追加する必要があります。この一連の値を、さまざまなコンパレータ (実装の多様性) を使用して何度も並べ替える必要があります。
ソート可能な(つまり、初期化後にコンパレータを使用して何度もソートする)重複のないJavaクラスコレクションを探しています。不透明で、たとえば既に存在する同じ値を持つ別のオブジェクトを追加するための ArrayList を防ぐコードを書くよりも純粋な解決策はありますか?
編集 1: 並べ替えに関する説明を追加する必要があります。この一連の値を、さまざまなコンパレータ (実装の多様性) を使用して何度も並べ替える必要があります。
Set Interface---->SortedSet Interface----->TreeSet Class
Set Interface---->HashSet Class
Set Interface---->LinkedHashSet Class
を使用できますTreeSet
。重複を削除します。
TreeSet
SortedSet
入力された要素をソートするようにインターフェイスを実装します
SortedSet s=new TreeSet();
s.add(12);
s.add(12);
s.add(1);
s.add(56);
s.add(6);
s.add(47);
s.add(1);
System.out.println(s);
出力
[1, 6, 12, 47, 56]
一意の要素にはSetを使用します。 Collections.sort()を使用して、使用するコレクションをいつでも並べ替えることができます
標準コレクションを拡張するか、ゼロから実装するのが最善かもしれません。例えば:
class SetList<E> extends ArrayList<E> {
boolean add(E e) {
if (contains(e)) {
return false;
} else {
super.add(e);
return true;
}
}
void add(int index, E e) { .. }
void addAll(..) {..}
void addAll(..) {..}
}
そして、あなたはCollections.sort
以前に述べたようになりました。ただし、すべてを再確認したいと思います-ライブラリメソッドが SetList について誤った仮定をしていることが想像できます。これは、ArrayList を拡張し、災害につながるためです。最初に ArrayList、List、および Collection の javadoc を読み、ゼロから作成することを実際に検討してください。