検索
ホームページJava&#&ベースJava コレクションのセット インターフェイスとリスト インターフェイスの違い

Java コレクションのセット インターフェイスとリスト インターフェイスの違い

Nov 25, 2019 am 11:04 AM
collectionjavalistset違いインターフェース

Java コレクションのセット インターフェイスとリスト インターフェイスの違い

本質的に、List と Set はインターフェイスであり、Collection インターフェイスを継承します。私たちがよく使う ArrayList と HashSet はそれぞれ List と Set インターフェースを継承しており、ジェネリックスを使用しているため、実際のアプリケーションで使用するために実際の型を指定することができます。通常、オブジェクトを保存するためにこれらを使用します。もちろん、Map もより頻繁に使用されます。それらはすべて、挿入、削除、検索のためのインターフェイスを提供し、Iterator の使用をサポートします。では、List と Set の違いは何でしょうか。また、使用する際にはどのように区別すればよいのでしょうか?

List と Set の違い

(1) List と Set の非常に重要な違いは、重複要素の存在が許可されるかどうかです。List では重複要素の挿入が許可されますが、List では重複要素の挿入が許可されます。 Set では重複要素は許可されず、同じ要素が挿入された場合でも置き換えられます。同じ要素が ArrayList と HashSet にそれぞれ挿入されていることを確認しました:

HashSet<String> hset = new HashSet<String>();
ArrayList<String> arrlst = new ArrayList<String>();
 
hset.add("hello");
hset.add("hello");
 
arrlst.add("hello");
arrlst.add("hello");
 
System.out.println("hset size: "+hset.size()+" toString: "+hset.toString());
System.out.println("arrlst size: "+arrlst.size()+" toString: "+arrlst.toString());

実行結果:

Java コレクションのセット インターフェイスとリスト インターフェイスの違い

PS: JDK のソース コードを見ると、 HashSet の実装が HashMap を通じて行われることがわかります。

Java 学習ビデオの推奨: Java 入門

# (2) List と Set のもう 1 つの重要な違いは、要素が格納される順序に関連しています。 List は順序付きコレクションですが、Set は順序なしコレクションです。 List は要素が挿入される順序を保持します。つまり、以前に挿入された要素のインデックスは、後で挿入された要素のインデックスよりも小さくなります。 Set は挿入順序を保持しません。同様に、検証してみましょう:

HashSet<String> hset = new HashSet<String>();
ArrayList<String> arrlst = new ArrayList<String>();
 
hset.add("1");
hset.add("3");
hset.add("2");
 
arrlst.add("1");
arrlst.add("3");
arrlst.add("2");
 
System.out.println("hset size: "+hset.size()+" toString: "+hset.toString());
System.out.println("arrlst size: "+arrlst.size()+" toString: "+arrlst.toString());

実行結果:


Java コレクションのセット インターフェイスとリスト インターフェイスの違い

PS: ArrayList はオブジェクト配列を使用してオブジェクトを保存し、毎回新しいオブジェクトを挿入します。サイズに応じてオブジェクトが挿入されます; HashSet については、前述したように HashMap を通じて実装されます. 格納されたオブジェクトは HashMap のキーとして使用され、キーが同じ場合は値が置き換えられます。もちろん、SortedSet (Set インターフェイスを継承) は、指定された並べ替え方法で要素を保存できます。

(3) List には添字を使用してアクセスできますが、Set にはアクセスできません。

List インターフェイスの一般的な実装クラスには ArrayList、Vector、LinkedList が含まれ、Set インターフェイスの一般的な実装クラスには HashSet、TreeSet、LinkedHashSet が含まれます。

その他の Java 関連記事の推奨事項:

Java 入門チュートリアル

以上がJava コレクションのセット インターフェイスとリスト インターフェイスの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール