CollectionにおけるArrayList,LinkedList,Vector,Setの比較と運用


|-List:要素は順序付けされており、要素は繰り返すことができます.このコレクション・アーキテクチャにはインデックスがあるからです.|–ArrayList:下位層のデータ構造は配列構造を用いている.特徴:クエリーが速い.しかし、追加削除はやや遅い.スレッドが同期していません.|–LinkedList:下位層で使用されるチェーンテーブルデータ構造.特徴:削除速度が速く、クエリーがやや遅い.スレッドが同期していません.|–Vector:最下位は配列データ構造です.スレッド同期.ArrayListに置き換えられました.効率が悪いから.|–Set:要素は無秩序で、要素は繰り返してはいけません.、List:特有の方法.角標を操作できる方法はすべてこのシステム特有の方法である.
add(index,element);addAll(index,Collection);
削除remove(index);
set(index,element);検索get(index):subList(from,to);listIterator(); int indexOf(obj):指定した要素の位置を取得します.ListIterator listIterator();
List集合特有の反復器.ListIteratorは、Iteratorのサブインタフェースです.
反復時に、集合オブジェクトのメソッドで集合内の要素を操作することはできません.ConcurrentModificationException異常が発生するためです.
したがって,反復器では反復器の操作要素を見逃すことしかできないが,Iterator法は限られており,要素を判断,取り出し,削除する操作しかできず,追加,修正など他の操作を望む場合はそのサブインタフェース,ListIteratorを用いる必要がある.
このインタフェースはリストセットのlistIteratorメソッドでのみ取得できます.
Set集合:|–Set:要素は無秩序(格納と取り出しの順序が必ずしも一致しない)であり、要素は繰り返してはならない.、|–HashSet:下位データ構造はハッシュテーブルです.スレッドが安全ではありません.同期しません.HashSetはどのようにして要素の一意性を保証しますか?要素の2つの方法,hashCodeとequalsによって完成した.要素のHashCode値が同じ場合、equalsがtrueであるかどうかを判断します.要素のhashcode値が異なる場合、equalsは呼び出されません.なお,要素が存在するか否かの判断や削除などの操作には,要素のhashcodeやequalsメソッドが依存する.
|--TreeSet:
               Set          。
                      。
                      :
            compareTo  return 0.

            TreeSet        :          。
                  Comparable  ,  compareTo  。
                          ,        。

            TreeSet        。
                        ,              。
                           。
                   ,       。

Setコレクションの機能はCollectionと一致している.