ホームページ  >  記事  >  Java  >  Java での Map インターフェイスの使用法とインタビューの知識ポイントの要約

Java での Map インターフェイスの使用法とインタビューの知識ポイントの要約

WBOY
WBOY転載
2022-07-20 14:17:461521ブラウズ

この記事では、java に関する関連知識を提供します。主に、Map インターフェースの使用法と、Map インターフェースのストレージ特性、一般的に使用される実装クラスなど、インタビューの知識ポイントに関する関連質問をまとめています。作成方法や一般的な方法などを見て、皆さんの参考になれば幸いです。

Java での Map インターフェイスの使用法とインタビューの知識ポイントの要約

#推奨学習: 「

Java ビデオ チュートリアル #」

マップ インターフェイス

ストレージ機能

  • キー (キー) 値 (値) のペアの形式で保存されます

  • キーには順序がなく、添え字がなく、要素を繰り返すことはできません

  • 値は順序付けされておらず、添え字もなく、要素は繰り返すことができます

  • ##一般的に使用される実装クラス

##ハッシュマップ
  1. JDK1.2 の基盤となるハッシュ テーブルの実装はスレッド非セキュアであり、非常に効率的です
    LinkedHashMap
  2. JDK1.2 は HashMap のサブクラスです。基盤となるハッシュ テーブルの実装はスレッドセーフで効率性が高くなります。
    TreeMap
  3. JDK1.2 は SortedMap の実装クラスです。基盤となる赤黒ツリーの実装はスレッドアンセーフであり、非常に効率的です
    HashTable
  4. JDK1.0 の基盤となるハッシュ テーブルの実装はスレッドセーフで非効率的です
    プロパティ
  5. JDK1.0 は HashTable のサブクラスです。基盤となるハッシュ テーブルはスレッドセーフであり、効率が低くなります。
    作成メソッド

ポリモーフィズムを使用する

マップ<キーのジェネリックス、値のジェネリックス>コレクション名=new実装クラス名<キーのジェネリックス、値のジェネリックス>() ;

ヒント: キーと値のペアは要素です

一般的なメソッド

    Value put(key, value)
  • : コレクションの最後にキーと値のペアを追加します

    ##キーが既に存在する場合は、値を置き換えます

    • #void clear()
    : コレクション要素をクリアします
  • boolean containsKey(key)

    : コレクションを判定します特定のキーがコレクションに存在するかどうか
  • boolean containsValue(value)

    : 特定の値がコレクションに存在するかどうかを判断します
  • Value get(key)

    : キーに対応する値を取得します
  • ##boolean isEmpty(): コレクションのコンテンツが空、比較できません null 値

  • void putAll(Map collection name): 指定された Map コレクションの内容を現在のコレクションの末尾に追加します

  • Value delete(key): キーに対応するキーと値のペアを削除します

  • ##int size() : コレクションキー値の取得 ペア数

  • # コード例:

    #

    public class Test {
        public static void main(String[] args) {
            //数字-String   1 - 一   1 - yi
            Map<Integer, String> map = new HashMap<Integer, String>();
            map.put(1, "一");
            map.put(111, "yiyiyi");
            map.put(666, "liuliuliu");
            map.put(111, "一一一");
    
            System.out.println(map.containsKey(678));//f
            System.out.println(map.containsValue("yiyiyi"));//t
    
            System.out.println(map.get(111));
    
            map.remove(666);
            System.out.println(map.get(666));
    
            System.out.println(map.size());//2
        }}
    Traversal メソッド
  • 1、
keySet() get()

最初にすべてのキーを取得し、次にキーを走査してすべての値を取得します

Set keySet(): Set コレクションに格納されているすべてのキーを取得して戻ります

  •         //获取所有键
            Set<键的泛型> set=集合名.keySet();
            //遍历所有键
            set.forEach(
                o-> 
                //o就代表当前正在被遍历的键
                //通过集合名.get(o)可以得到对应的值
            );如:		Map<Integer, String> map = new HashMap<>();
            map.put(123, "yiersan");
            map.put(234, "ersansi");
            map.put(456, "siwuliu");
            map.put(999, "jiujiujiu");
            Set<Integer> set=map.keySet();
            set.forEach(o-> System.out.println("键:"+o+",值:"+map.get(o)));
      2、
    • values()
    すべての値を直接取得します
  • Collection<値の汎用タイプ>values(): コレクションに格納されているすべての値を取得し、 return
    • Collection<值的泛型> coll = 集合名.values();coll.forEach(v-> v就代表当前的值);如:		Collection<String> coll = map.values();
              coll.forEach(v-> System.out.println(v));
    • 3、
    • entrySet()

    キー値の取得とオブジェクトの走査
  • Set< Map.Entry<キーの汎用タイプ、値の汎用タイプ> >entrySet() : Set コレクションに格納されているすべてのキーと値のペアのオブジェクトを取得し、
    • Set< Map.Entry< キーのジェネリック型、値のジェネリック型> > を返します。 Set< key Value ペア object>

    • getKey(): Entry オブジェクトのキーを取得します

    • getValue(): Entry オブジェクトの値を取得します

    •         //获取键值对对象集合
              Set<Map.Entry<键的泛型,值的泛型>> set2=集合名.entrySet();
              for (Map.Entry entry : set2) {
                  //通过entry.getKey()获取键
                  //通过entry.getValue()获取值
              }如:        Set<Map.Entry<键的泛型,值的泛型>> set2=集合名.entrySet();
              for (Map.Entry entry : set2) {
                  System.out.println("键:"+entry.getKey()+",值:"+entry.getValue())
              }
              System.out.println("lambda自遍历:");
              set2.forEach(entry-> System.out.println("键:"+entry.getKey()+",值:"+entry.getValue()));
    • 4,
    • Self-traversal forEach

    • JDK8.0
            集合名.forEach(new BiConsumer<键的泛型, 值的泛型>() {
                @Override
                public void accept(键的泛型 i, 值的泛型 s) {
                    //i代表键
                    //s代表值
                }
            });
            System.out.println("lambda简化自遍历:");
            map.forEach((k,v)-> k代表键,v代表值);如:
    		map.forEach(new BiConsumer<Integer, String>() {
                @Override
                public void accept(Integer i, String s) {
                    System.out.println("键:"+i+",值:"+s);
                }
            });
            System.out.println("lambda简化自遍历:");
            map.forEach((k,v)-> System.out.println("键:"+k+",值:"+v));
  • さまざまな実装クラスの使用
    • HashMap
    Yes null 値を保存します。キーには 0 ~ 1 の null を保存でき、値には 0 ~ n の null を保存できます
  • ##LinkedHashMap
      は、保存と引き出しの順序を確実に行うことができます。一貫性のある
    • ツリーマップ
    • デフォルトではキーに従って昇順にソートできます
    • デフォルトではnullをソートできません

      キーがカスタム タイプの場合は、TreeSet と同じ方法で並べ替えルールを設定する必要があります
    • HashTable
        null 値は格納できません
      プロパティ
    • キーと値は String 型である必要があります
    • ポリモーフィズムの作成は推奨されません

      ジェネリックスは使用できません宣言済み
    • セットインタビューの補足知識ポイント

      • Set
      • はキーのみを持ち、値を持たないセットです。
      Map

      基になる配列の長さは
    • 16

      配列の読み込み係数は

      75%
    • , 配列ビット使用率が 75% に達すると、配列は
    • バランス バイナリ ツリー

      方式で拡張されます。拡張長は元の長さ *2、展開された各

      配列の長さは 16
    • です
    • Set または Map が小さい値から大きい値まで値を保存するのはなぜですか?

      • 格納された値が小さすぎる場合、整数値自体がその格納添字となり、添字は小さいものから大きいものへと続くため、値も小さいものから大きなものへと格納されます
    • #赤黒ツリーは、

      高速クエリ効率を特徴とする バイナリ検索メソッドを使用します

    • 赤黒ツリー: ハッシュコード値を基準として使用し、ハッシュコード値が現在の要素より大きい場合は右側に格納します。値が現在の要素より小さい場合は、左側に格納します。

    • 二分探索方式: 一度に半分のデータをロックするのが特徴です

    • ハッシュ テーブル配列内のリンク リストの長さが 8 に達すると、

      リンク リストの要素が再編成され、赤黒ツリーが開きます。

      推奨学習: 「
    • Java ビデオ チュートリアル

    以上がJava での Map インターフェイスの使用法とインタビューの知識ポイントの要約の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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