この記事では、java に関する関連知識を提供します。主に、Map インターフェースの使用法と、Map インターフェースのストレージ特性、一般的に使用される実装クラスなど、インタビューの知識ポイントに関する関連質問をまとめています。作成方法や一般的な方法などを見て、皆さんの参考になれば幸いです。
#推奨学習: 「Java ビデオ チュートリアル #」
マップ インターフェイスストレージ機能JDK1.2 の基盤となるハッシュ テーブルの実装はスレッド非セキュアであり、非常に効率的です
JDK1.2 は HashMap のサブクラスです。基盤となるハッシュ テーブルの実装はスレッドセーフで効率性が高くなります。
JDK1.2 は SortedMap の実装クラスです。基盤となる赤黒ツリーの実装はスレッドアンセーフであり、非常に効率的です
JDK1.0 の基盤となるハッシュ テーブルの実装はスレッドセーフで非効率的です
JDK1.0 は HashTable のサブクラスです。基盤となるハッシュ テーブルはスレッドセーフであり、効率が低くなります。
ヒント: キーと値のペアは要素です
一般的なメソッド
##キーが既に存在する場合は、値を置き換えます
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 メソッド
最初にすべてのキーを取得し、次にキーを走査してすべての値を取得します
//获取所有键 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)));
Collection<值的泛型> coll = 集合名.values();coll.forEach(v-> v就代表当前的值);如: Collection<String> coll = map.values(); coll.forEach(v-> System.out.println(v));
//获取键值对对象集合 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()));
集合名.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));
デフォルトではnullをソートできません
ポリモーフィズムの作成は推奨されません
セットインタビューの補足知識ポイント
配列の読み込み係数は
方式で拡張されます。拡張長は元の長さ *2
、展開された各
Set または Map が小さい値から大きい値まで値を保存するのはなぜですか?
高速クエリ効率を特徴とする バイナリ検索メソッドを使用します
赤黒ツリー: ハッシュコード値を基準として使用し、ハッシュコード値が現在の要素より大きい場合は右側に格納します。値が現在の要素より小さい場合は、左側に格納します。
二分探索方式: 一度に半分のデータをロックするのが特徴です
リンク リストの要素が再編成され、赤黒ツリーが開きます。
推奨学習: 「以上がJava での Map インターフェイスの使用法とインタビューの知識ポイントの要約の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。