マップ収集、HashMap、LinkedHashMap、Hashtable

1.地図

(1。概要

実生活では、このようなコレクションをよく目にします。IPアドレスとホスト名、ID番号と個人、システムユーザー名とシステムユーザーオブジェクトなどの
1対1の対応は、マッピングと呼ばれます。Javaは、このオブジェクト関係のオブジェクト、つまりjava.util.Map
インターフェイスを格納するための特別なコレクションクラスを提供します。
パブリックインターフェイスMap <K、v>

java。util.Map<k、v>コレクションの特徴
マップコレクション:1。マップコレクション
は2列のコレクションであり、要素には2つの値(キー、値)が含まれます
2.内の要素マップコレクション、キー、および値データ型は同じでも異なっていても
かまいません。3。マップコレクションの要素、キーの繰り返しは許可されておらず、値の繰り返しも可能です
。4。マップコレクションの要素、キー、および値は1対1の対応です

マップとコレクションの違いコレクションの
コレクションでは、要素は分離して存在し(シングルトンとして理解されます)、コレクションに格納されている要素は1つずつ格納されます。
マップのコレクションでは、要素はペアで存在します(夫と妻として理解されます)。各要素は、キーと値の2つの部分で構成されており、対応する値はキーから見つけることができます。
コレクション内のコレクションは単一列コレクションと呼ばれ、マップ内のコレクションは二重列コレクションと呼ばれます。
マップ内のセットに重複するキーを含めることはできず、値を重複させることができることに注意してください。各キーは1つの値にのみ対応できます。
一般的に使用されるサブクラスをマップします

HashMap <K、V>:データを格納するために使用されるハッシュテーブルの構造。要素のアクセスシーケンスの一貫性を保証することはできません。
キーの一意性と非重複性を確保するには、キーのhashCode()メソッドとequals()メソッドを書き直す必要があります。
LinkedHashMap <K、V>:HashMapの下にサブクラスLinkedHashMapがあり、ハッシュテーブル構造+リンクリスト構造を使用してデータを格納します。
リンクリスト構造は、要素のアクセスシーケンスの一貫性を保証できます。ハッシュテーブル構造により、キーの一意性と非反復性が保証され、キーの
hashCode()メソッドとequal)メソッドは次のことを行う必要があります。書き直されます。

マップの一般的な方法

1.public v put(K key、v value);指定されたキーと指定された値をMapコレクションに追加します。

      キーと値のペアを格納する場合、キーは繰り返されず、戻り値vはnullになります。
      キーと値のペアを格納する場合、キーが繰り返され、新しい値がマップ内の繰り返される値の代わりに使用されます。置き換えられた値の値が返されます。

      Map <String、String> map = new HashMap <>;

      map.put( "楊過"、 "リトルドラゴンガール");

      System.out.println(map);

      実行結果:{楊過=リトルドラゴンガール}

2. public V remove(object key):Mapコレクション内の指定されたキーに対応するキーと値のペア要素を削除し、削除された要素の値を返します。

      戻り値; V
      キーが存在し、vは削除された値を返します。キーが存在しない場合、vはnullを返します

      // Mapコレクションオブジェクトを作成します
      Map <String、Integer> map = new HashMap <>();
      map
      .put ( "赵丽颖"、168); map.put( "杨颖"、165);
      map .put ( "林志玲」、178);System。out。println
      (map); // {林志玲= 178、赵丽颖= 168、杨颖= 165}
      整数v1 =map。remove(key: "林志玲");
      System.out。Println ( "v1:" + v1); // v1:
      178System。out。println(map); // {赵丽颖-168、杨颖= 165} |

3. Public V get(オブジェクトキー)は、指定されたキーに従ってMapコレクション内の対応する値を取得します。

     キーが存在する場合は対応する値を返し、キーが存在しない場合はnullを返します     

      // Mapコレクションオブジェクトを作成します
      Map <String、Integer> map = new HashMap <>();
      map
      .put( "Zhao Liying "、168); map.put( "杨颖"、165);
      map .put ( "林志玲"、178);
      整数v1 = map.get( "杨颖");
      System.out。println( "v1:" + v1); // v1:165
      整数v2 =map。get( "Di Lireba" );
      System.out。Println( "v2:" + v2); // v2:null

4.ブールcontainsKey(オブジェクトキー)は、セットに指定されたキーが含まれているかどうかを判別します。

      含まれている場合はtrueを返し、含まれていない場合はfalseを返します

      // Mapコレクションオブジェクトを作成します
      Map <String、Integer> map = new HashMap <>();
      map .put( "赵丽颖"、168);
      map .put( "杨颖"、165);
      map .put ( "林志玲」、178);
      boolean型B1 =マップのcontainsKey( '赵丽颖。 ");
      システムうちのprintln(" B1: "。。+ B1); // B1:真
      。ブールB2 =マップのcontainsKey( "张无济");
      システム.out。println( "b2:" + b2); // b2:false

5.public Set <K> keySet():Mapコレクション内のすべてのキーを取得し、Setコレクションに保存します。

      Mapコレクションの最初のトラバーサルメソッド:キーを介して値を検索します       。Map
      コレクションのメソッド
Set <K> keySet()は、このマップに含まれるキーのSetビューを返します。
      実装手順:
      1。MapコレクションのメソッドkeySet()を使用して、Mapコレクションのすべてのキーを取り出してSetコレクションに格納します。2。Setコレクションを
      トラバースして
      Mapコレクションの各キーを取得します。3 。マップコレクションメソッドget(key)は、キーで値を検索します

6. public Set <Map。Entry<K、V >> entrySet():Mapコレクション(Setコレクション)内のすべてのキーと値のペアのコレクションを取得します。
マップは、キー(キー)と呼ばれる、値(値)と呼ばれる2種類のオブジェクトに格納されます。これら
は、エントリのマップ1を実行するオブジェクトとも呼ばれるマップ部門でペアで保持する必要があります。エントリは、キーと値のペアの対応をオブジェクトにカプセル化します。つまり、キーと値のペアオブジェクトであるため
、Mapコレクションをトラバースすると、各キーと値のペア(Entry)オブジェクトから対応するキーと対応する値を取得できます。
Entryはキーと値のペアを表すため、対応するキーと対応する値を取得するメソッドも提供します
。publicK getKey()]:Entryオブジェクトのキーを取得します。
public V getValue():Entryオブジェクトの値を取得します。
Mapコレクションは、すべてのEntryオブジェクトを取得するメソッドも提供します
。publicSet<Map。Entry<K、V >> entrySet():Mapコレクション(Setコレクション)内のすべてのキーと値のペアのセットを取得します。

マップコレクションの2回目の走査


Mapコレクションをトラバースする2番目の方法:Entryオブジェクトを使用してMapコレクションのメソッドをトラバース
ます。Set<Map。Entry<K、V >> entrySet()は、このマップに含まれるマッピング関係のSetビューを返します。
実装手順:
1。MapコレクションのentrySet()メソッドを使用して、Mapコレクションの複数のEntryオブジェクトを取り出し、それらをSetコレクションに格納します。2。Setコレクションを
トラバースして各Entryオブジェクトを取得します。3
。のエントリセットを使用します。エントリオブジェクトメソッドgetKey()およびgetVolue()はキーと値を取得します

それぞれに使用してトラバースする

2.HashMap 

java。util。HashMap<k、v>コレクションはMap <k、v>インターフェースを実装します
HashMapコレクションの特徴:1。HashMapコレクション
の最下層はハッシュテーブルです:クエリ速度は特に高速です
JDK 1.8より前:配列+単一リンクリスト
JDK1.8以降:配列+単一リンクリスト/赤黒ツリー(リンクリストの長さが8を超える):クエリ
2の速度を向上させます。hashMapコレクションは順序付けられていないコレクションであり、要素の格納と削除の順序です。要素に一貫性がない可能性があります

。HashMapは定義タイプ(値としてのカスタムタイプ)から保存されます

HashMapはカスタムタイプを格納します(キーとしてのカスタムタイプ)

HashMapはカスタムタイプのキー値
キーを格納します:Personタイプ
PersonクラスはhashCodeメソッドとequalsメソッドを書き換えて、キーが一意であることを確認する必要があります
値:文字列タイプ
を繰り返すことができます

3.LinkedHashMap

java。util。inkedHashMap<k、v>コレクションはHashMap <k、v>を拡張しますコレクション
の特性LinkedHashMap:
1。L inkedHashMapコレクションの最下層はハッシュテーブル+リンクリストです(反復の順序は保証されています) )
2。LinkedHashMapコレクションは順序付けられています要素の格納と削除の順序は同じです。
基本的な原則:
ハッシュテーブル+リンクリスト(要素の順序を記録)

キーを順番に繰り返すことはできません

4.ハッシュテーブルコレクション(HashMapに置き換えられました)

java。util。Hashtable<K、V>コレクションはMop <K、V>インターフェースを実装します
Hashtable:最下層もハッシュテーブルであり、スレッドセーフなコレクションであり、シングルスレッドのコレクションであり、低速です
。HashMop:最下層はハッシュテーブルです希望テーブルはスレッドセーフコレクション、マルチスレッドコレクション、高速
HashMapコレクション(以前に学習したすべてのコレクション):null値、nullキーを
格納できますハッシュテーブルコレクション、null値、nullキーを格納できません
HashtableとVectorこのコレクションは、jdk1.2バージョン以降、より高度なコレクション(HashMap、Arraylist)に置き換えられています。Hashtable
のサブクラス。プロパティは、履歴のステージで引き続きアクティブです。
プロパティコレクションは、 I0ストリーム。


 

おすすめ

転載: blog.csdn.net/weixin_51980491/article/details/112968825