ホームページ  >  記事  >  Java  >  Javaコレクションフレームワークのデータ構造は何ですか

Javaコレクションフレームワークのデータ構造は何ですか

WBOY
WBOY転載
2023-05-28 15:58:571626ブラウズ

    #1. 収集フレームワークとは何ですか?

    Java には、シーケンス リスト、リンク リスト、キュー、スタック、優先キュー、ハッシュ テーブルなどの既製のデータ構造のセットがあり、これらは対応するインターフェイス/クラスにカプセル化されています。プログラマーが直接使用するには、内部構造を実装する必要がなく、使用する関連オブジェクトを作成するだけで済みます。

    コレクションは、複数の要素を格納および管理するデータ構造です。これらの要素は 1 つの単位に配置され、追加、削除、変更、クエリなどの操作を通じて処理できます。例えば、トランプのセット(カードの集合)、アドレス帳(名前と電話番号の間のマッピング関係のセット)などを例として使用することができる。

    下の図は非常に重要です。 ! !よく使用されるインターフェイスとクラスを覚えておく必要があります。 !

    Javaコレクションフレームワークのデータ構造は何ですか

    Javaコレクションフレームワークのデータ構造は何ですか

    マップ インターフェイスは 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() メソッドがあります。

    基本的な関係 (簡略化されたバージョン)

    Javaコレクションフレームワークのデータ構造は何ですか

    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

    # を指定します。 ##void clear()コレクション内のすべての要素を削除しますboolean isEmpty()コレクションがには要素がありません。一般に空のセットとして知られています。boolean delete(Object e)要素 e がセット内にある場合は、それらの 1 つを削除します boolean add(E e)要素 e をコレクションに追加しますint size()コレクション内の要素の数を返しますObject[] toArray()コレクション内のすべての要素を含む配列を返します
    method function
    注: 最後の Object[] toArray() メソッドでは、Object[] 型の配列が返されます。基礎となるメソッドは、コレクション内の要素を 1 つずつ取り出し、それらを Object オブジェクトに変換します。 、返される配列にそれらを格納し、最後に Object[] 型の配列を返します。 String[] 配列に変換すると、型変換例外がスローされます。

    Javaコレクションフレームワークのデータ構造は何ですか

    配列内のすべての要素が 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. マップ インターフェイス

    は、 キーと値のペアの形式でデータを保存します。ここでのキー値は一意であり、各キー値はそのキー値に対応できます。対応する値 value。異なるキー値を同じ値に対応させることができます。 HashMap: 要素を格納する際、キー値に基づいて内部の hashCode 関数が呼び出され、要素が配置される場所が検索されるため、ハッシュ テーブル内の要素は格納された順序で格納されません。

    マップの一般的なメソッドの使用

    MethodFunction# #V get(Object k)V に従って対応する v を検索します getOrDefault(Object k, V defaultValue)V put(K key, V value)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());
            }

    Javaコレクションフレームワークのデータ構造は何ですか

    4、具体的实现类

    Javaコレクションフレームワークのデータ構造は何ですか

    指定された k
    According指定された k に対応する v を検索します。見つからない場合はデフォルト値を返します。
    指定された k-v を入力します。マップ
    キーが含まれているかどうかを判定
    値が含まれているかどうかを判断します

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

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。