ホームページ  >  記事  >  Java  >  Javaのコレクションの違いは何ですか?

Javaのコレクションの違いは何ですか?

青灯夜游
青灯夜游オリジナル
2019-11-18 17:49:074865ブラウズ

Javaのコレクションの違いは何ですか?

#Java のコレクションの違いは何ですか?

Java では、コレクションは主に List、Set、Map の 3 種類に分類されます。List と Set は Collection を継承しますが、Map は継承しません。

List と Set の違い List は要素に格納順序があり、繰り返しの要素を格納できる 検索効率は高いが、挿入・削除効率が低い Set には格納順序がなく、後の要素 以前に繰り返された要素を置き換えるため、検索効率は低く、挿入および削除効率は高くなります。 (Set の格納場所は HashCode コードによって決定されるため、格納するオブジェクトには equals() メソッドが必要です。また、Set トラバーサルでは添え字がないため反復のみを使用できます。)

1 、最も一般的に使用されるコレクション: ArrayList

特徴: ArrayList コレクション内の要素の格納場所は連続しているため、クエリは高速になりますが、挿入と削除の操作がより面倒になり、他の問題が発生します。要素の位置が変更されます。

注: リストに保存されるのはオブジェクトへの参照であり、オブジェクト自体ではありません。これについて明確でない場合は、ここに落とし穴があります。例:

最適化コードを保存して仮想マシンのメモリを節約するために、次のようなコードを作成する人がいます:

List<List<String>> list=new ArrayList<>();
List<String> list2=new ArrayList<>();
for(int i=0;i<10;i++){
    list2.add(""+i);    
    list.add(list2);
    list2.clear();
}

Writingこのようにオブジェクトとして繰り返し使用できますが、 list にはオブジェクトへの参照が格納されます。 list2.clear(); が呼び出されると、リスト内の list2 もクリアされるため、最終結果は空のコレクションのみになります。 。

2. 最も一般的に使用されるコレクションの逆のセット: LinkedList

LinkedList と ArrayList は補完的なため、ArrayList の利点は LinkedList の欠点であり、 ArrayList の欠点は LinkedList です。利点は次のとおりです。

特徴: LinkedList 内の要素の位置は任意であるため、挿入および削除操作はより効率的になりますが、クエリ効率は低くなります。

3. 一般集合の逆である集合: ベクトル

なぜ一般集合の逆であると言われるのでしょうか?これは古い動的配列であるため、多くのメソッドが synchronized で変更されているため、スレッド セーフですが、一般的なコレクションはスレッド セーフではありません。

特徴: 複数のスレッドによる同時アクセスでも不確実な結果は生じませんが、効率は比較的低いため、スレッドセーフを考慮したい場合に使用できます。

4. Set で最もよく使用されるコレクション: HashSet

Set コレクションを使用するときは、ほとんどの場合 HashSet を使用します。HashSet はハッシュ テーブルを使用して実装されます。セット内の要素は順序付けされておらず、null 値を持つことができますが、要素が重複することはできません。

特徴: 同じ要素は同じ hashCode を持つため、要素が重複することはできません

5. Set で 2 番目によく使用されるセット: TreeSet

TreeSet は、バイナリ ツリー構造を使用して実装されたセットです。

特徴: セット内の要素は順番に並んでおり、null は許可されず、重複した要素は許可されません。

6. 2 番目によく使用されるコレクション: HashMap

キーと値のペアを保存する必要があるシナリオによく遭遇しますが、HashMap が最もよく使用されるキーです。 -value. 保存されたコレクションに。

特徴: HashMap では空のキー値が許可され、スレッドセーフではないため、要素の挿入、削除、配置が高速になります。

7. あまり一般的には使用されないマップ コレクション: TreeMap、HashTable

TreeMap は赤黒ツリーに基づいて実装されており、自然な順序に従って順序付けするのに適しています。鍵。

HashTable は HashCode に基づいて実装されていますが、スレッドセーフであるため、HashMap よりも効率が低く、null 値は許可されません。

推奨チュートリアル: Java チュートリアル

以上がJavaのコレクションの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。