#1. 収集フレームワークとは何ですか?
Java には、シーケンス リスト、リンク リスト、キュー、スタック、優先キュー、ハッシュ テーブルなどの既製のデータ構造のセットがあり、これらは対応するインターフェイス/クラスにカプセル化されています。プログラマーが直接使用するには、内部構造を実装する必要がなく、使用する関連オブジェクトを作成するだけで済みます。
コレクションは、複数の要素を格納および管理するデータ構造です。これらの要素は 1 つの単位に配置され、追加、削除、変更、クエリなどの操作を通じて処理できます。例えば、トランプのセット(カードの集合)、アドレス帳(名前と電話番号の間のマッピング関係のセット)などを例として使用することができる。
下の図は非常に重要です。 ! !よく使用されるインターフェイスとクラスを覚えておく必要があります。 !
マップ インターフェイスは Iterable インターフェイスを実装していないため、マップ インターフェイス内の要素をどのように走査すればよいでしょうか?
Map<Integer,String> map = new HashMap();
map.put(1,"jack");
map.put(2,"tom");
Set<Map.Entry<Integer, String>> entries = map.entrySet();
// 使用迭代器进行遍历 ,增强 for同理
Iterator<Map.Entry<Integer, String>> iterator = entries.iterator();
while (iterator.hasNext()) {
Map.Entry<Integer, String> entry = iterator.next();
System.out.println(entry.getKey() + " " + entry.getValue());
}
ログイン後にコピー
HashMap を例に挙げると、そのentrySet() メソッドを呼び出して、マップ内の各 キーと値のペアを Map.Entry オブジェクトにカプセル化できます。 Set インターフェイスはそれを受け取るために使用され、反復子または for-each() を使用して走査することができ、各エントリ オブジェクトにはキー値と値をそれぞれ取得する getKey() メソッドと getValue() メソッドがあります。
基本的な関係 (簡略化されたバージョン)
2. Collection インターフェイス
は、通常、Collection インターフェイスを実装するインターフェイスまたはクラスによって受け入れられます。上の図からわかるように、Collection インターフェイスは一連のインターフェイスおよびクラスの親インターフェイスであるため、クラスのオブジェクトを具体的に実装します。内部的に実装されたメソッドが比較的少ないため、サブクラスの一部の共通メソッドを呼び出すことができません。 。
1. ジェネリックスを使用して、対応するコレクション内のオブジェクト型を指定します。
注: ここで渡される型は参照型のみです。基本的なデータ型の場合、そのラッパー クラスは次のとおりです。
Collection<String> collection1 = new ArrayList();
collection1.add("haha");
collection1.add("world");
Collection<Integer> collection2 = new ArrayList();
collection2.add(1);
collection2.add(2);
//collection2.add("hh");// 这里会报错,不符合传入的指定类型Integer
ログイン後にコピー
2.Collection の共通メソッド use
method | function |
# を指定します。 ##void clear() | コレクション内のすべての要素を削除します |
boolean isEmpty() | コレクションがには要素がありません。一般に空のセットとして知られています。 |
boolean delete(Object e) | 要素 e がセット内にある場合は、それらの 1 つを削除します |
boolean add(E e) | 要素 e をコレクションに追加します |
int size() | コレクション内の要素の数を返します |
Object[] toArray() | コレクション内のすべての要素を含む配列を返します |
注: 最後の Object[] toArray() メソッドでは、Object[] 型の配列が返されます。基礎となるメソッドは、コレクション内の要素を 1 つずつ取り出し、それらを Object オブジェクトに変換します。 、返される配列にそれらを格納し、最後に Object[] 型の配列を返します。 String[] 配列に変換すると、型変換例外がスローされます。
配列内のすべての要素が String に変換されるという保証はなく、String[] 型の配列に強制的に変換されるだけであるため、変換するには、最初に返された結果を走査し、それらを 1 つずつ String 型に変換し、最後にそれらを String[] 型の配列に割り当てる必要があります。 Java で配列型全体を変換することはお勧めできません。
Object[] objects = collection1.toArray();
String[] strings = new String[objects.length];
for (int i = 0; i < objects.length; i++) {
strings[i] = (String)objects[i];// 一个一个转,但是没啥必要
}
ログイン後にコピー
3. マップ インターフェイス
は、< k, v > キーと値のペアの形式でデータを保存します。ここでのキー値は一意であり、各キー値はそのキー値に対応できます。対応する値 value。異なるキー値を同じ値に対応させることができます。 HashMap: 要素を格納する際、キー値に基づいて内部の hashCode 関数が呼び出され、要素が配置される場所が検索されるため、ハッシュ テーブル内の要素は格納された順序で格納されません。
マップの一般的なメソッドの使用
Method | Function |
# #V get(Object k)指定された k | |
V に従って対応する v を検索します getOrDefault(Object k, V defaultValue)According指定された k に対応する v を検索します。見つからない場合はデフォルト値を返します。 | |
V put(K key, V value)指定された k-v を入力します。マップ | |
boolean containsKey(オブジェクトキー)キーが含まれているかどうかを判定 | |
#boolean containsValue(オブジェクト値)値が含まれているかどうかを判断します | | ##Set>entrySet()
すべてのキーと値のペアを返す | | boolean isEmpty()
空かどうかを判断します | | int size()
数値を返しますキーと値のペアの数 | | # HashMap<Integer, String> map = new HashMap<>();
// put()
map.put(1,"张飞");// 这里的 key 值唯一
map.put(1,"宋江");// 如果二次插入的 key 值之前有,则替换其 value值
map.put(2,"Jack");
System.out.println(map);
// get()
String s1 = map.get(1);// 返回 宋江
String s3 = map.getOrDefault(3,"三团");// 未找到,返回 三团
// entrySet()
// 该方法返回一个 Set<Map.Entry<Integer, String>> 对象
Set<Map.Entry<Integer, String>> entries = map.entrySet();
for (Map.Entry<Integer, String> entry : entries) {
// 通过 entry.getKey() 和 entry.getValue() 获取每个entry对应的 k, v值
System.out.println(entry.getKey() + " " + entry.getValue());
}
ログイン後にコピー
4、具体的实现类
以上がJavaコレクションフレームワークのデータ構造は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31