HashMapメソッドJava  



ハッシュマップ Java Javaマップ

JavaのHashMapクラスは、データを次の形式で格納します。 Key-Value キーデータが一意である必要があるペア。 対応するキーデータに基づいて値にアクセスできます。 HashMapはJavaのコレクションフレームワークに存在し、java.utilパッケージの一部です。 これは、ハッシュ手法の原理に基づいて機能します。

JavaHashMap階層  

JavaのHashMapクラスは 抽象 class アブストラクトマップ を実装します 地図 以下に示すようなインターフェース。

JavaのHashMap

HashMapの構造と動作原理  

JavaのHashMapは、次の原則に基づいて動作します。 ハッシュ 技術。 ハッシュでは、ハッシュ関数を使用してHashMapのキーと値をリンクします。 HashMapは、キーと値のペアを次の形式で格納します。 配列 各エントリがバケットと見なされるノードの数。 バケットは配列内の要素に他なりません。 各ノードには3つの値があります。 キー, 値、 とリンク 次の ノード。 複数のノードが同じインデックスを共有する場合、それはリンクリストを表します。 すべてのノードは、hashcode()を使用して計算されるバケット内のインデックスにマップされます。

JavaのHashMap

HashMapのパフォーマンス  

JavaでのHashMapのパフォーマンスは、以下のパラメーターに依存します。

  • 初期容量–初期化時にHashMapが格納できるバケットの数を示します。 デフォルトでは、 16 キーと値のペア
  • 負荷率–増加する必要がある容量のパーセンテージです。 デフォルトでは、 0.75
  • しきい値–これは負荷率と容量の積であり、デフォルト値は 12 (16 * 0.75)
  • 再ハッシュ–これは、しきい値に達した後に容量をXNUMX倍にするプロセスです。
参照
JavaのArrayBlockingQueue

JavaHashMap宣言  

JavaでHashMapを使用するには、インポートする必要があります java.util.HashMap パッケージ。 構文は次のとおりです。

HashMap<KeyType,ValueType> map = new HashMap<>();

キータイプ –これは重要なデータの種類です例:文字列または整数

ValueType –値データのタイプです。 例:文字列または整数

HashMapの機能  

以下は、JavaでのHashMapの機能です。

  • 各キーに対応する値を格納します
  • 一意のキーのみが含まれます
  • 重複するキーは許可されませんが、重複する値を持つことができます
  • データが挿入される順序がデータが取得される順序と同じではないことを意味する順序は維持されません。
  • 同期されていません

JavaHashMapクラスコンストラクタ  

次の表に示すように、HashMapは4つの異なるコンストラクターをサポートしています。

コンストラクタ商品の説明
HashMap()デフォルトのHashMapを初期化します
HashMap(Mapm)Mapmの要素を使用してハッシュマップを初期化します
HashMap(int容量)指定された容量整数値でハッシュマップを初期化します
HashMap(int容量、float loadfactor)指定された容量と負荷係数でハッシュマップを初期化します

HashMapメソッド  

Java HashMapは、以下の表に記載されているメソッドとともに、Mapインターフェースに属するすべてのメソッドをサポートします。

方法商品の説明パラメーター
void clear()このマップ内のすべてのマッピングを削除します。これは、マップが空になることを意味します
オブジェクトclone()このHashMapインスタンスのシャローコピーを返します。 キーと値自体は複製されません
ブールcontainsKey(オブジェクトキー)指定されたキーのマッピング値がある場合はtrueを返しますkey-値を取得する必要があるキー
ブール値containsValue(オブジェクト値)指定された値のキーのマッピングがある場合はtrueを返しますvalue-指定されたキーがマップされる値
セットするentrySet()マップのマッピングのセットビューを返します
ブール値equals(Object o)オブジェクトがマップと同じマッピングを持っている場合はtrueを返しますo-比較するオブジェクト
整数get(オブジェクトキー)マップ内の指定されたキーの値を返します。 マッピングがない場合はnullを返しますkey-値のマッピングを取得する必要があるキー
整数getOrDefault(オブジェクトキー、整数defaultvalue)マップされている場合は指定されたキーの値を返し、マッピングがない場合はデフォルト値を返しますkey-私たちが評価するキーを返す必要があります
defaultvalue-マッピングがない場合に返されるデフォルト値
int hashCode()マップのハッシュコード値を返します
ブールisEmpty()ハッシュマップにキーと値のペアがない場合はtrueを返します
keySet()を設定しますマップに存在するキーのセットビューを返します
整数put(文字列キー、int値)キーを値に関連付けます。 キーがすでに存在する場合は、古い値が新しい値に置き換えられますキー-マッピング用のキー
value-指定されたキーの値
void putAll(Map m)mのすべてのKey-Valueマッピングを現在のマップに関連付けますm-現在のマップに追加されるマッピングのコピー
整数putIfAbsent(文字列キー、整数値)キーにまだマップされていない場合は値を関連付け、それ以外の場合は現在の値を返しますキー-マッピング用のキー
value-関連付けられる値
整数remove(オブジェクトキー)マップ内の指定されたキーのマッピングを削除しますkey-マッピングを削除する必要があるマップ内のキー
ブール値remove(オブジェクトキー、オブジェクト値)指定された値にマップされている場合にのみ、指定されたキーのエントリを削除しますキー-マップのキー
value-キーにマップされた値
整数replace(文字列キー、整数値)指定されたキーの値は、現在何らかの値にマップされている場合にのみ値に置き換えられますキー-マップのキー
value-置き換えられる値
ブールreplace(文字列キー、整数oldvalue、整数newvalue)指定された古い値にすでにマップされている場合にのみ、指定されたキーのエントリを新しい値に置き換えますキー-マップのキー
oldvalue-キーにマップされたoldvalue
newvalue-キーにマップされる新しい値
int size()マップのサイズを返します
ストリングtoString()マップの文字列表現を返します
コレクションvalues()マップに存在する値のコレクションビューを返します
参照
JavaのHashSet

HashMapの例外  

Javaでは以下の例外がスローされます。

  • ConcurrentModificationException
  • IllelgalMonitorStateException
  • NullPointerException
  • 中断された例外
  • IllegalArgumentException

HashMapへの要素の追加  

以下の例でわかるように、最初に、文字列型のキーと整数型の値を使用して、「student」という名前のHashMapを作成します。 次に、を使用して個々のキーと値のペアを追加します。 置きます 方法。 出力では、要素が取得される順序が、要素が挿入された順序と同じではないことがわかります。

次に、「stu」という名前の2番目のHashMapを作成し、XNUMXつのキーと値のペアを追加します。 次に、これを使用して「学生」マップに追加します。 putAll 方法。

import java.util.HashMap;
public class HashMapAdd {

  public static void main(String[] args) {
    HashMap<String,Integer> student = new HashMap<>();
    student.put("Arthi", 100);
    student.put("Dev", 105);
    student.put("Banu",102);
    student.put("Rishi", 108);
    System.out.println("Elements in student map:");
    System.out.println(student);
    
    HashMap<String,Integer> stu = new HashMap<>();
    stu.put("Ravi",110);
    stu.put("Tejas", 112);
    System.out.println("Elements in stu map:");
    System.out.println(stu);
    
    student.putAll(stu);
    
    System.out.println("Elements in student map after invoking putAll method:");
    System.out.println(student);
  }

}
Elements in student map:
{Dev=105, Banu=102, Rishi=108, Arthi=100}
Elements in stu map:
{Ravi=110, Tejas=112}
Elements in student map after invoking putAll method:
{Dev=105, Ravi=110, Tejas=112, Banu=102, Rishi=108, Arthi=100}

マップに特定のキーまたは値が含まれているかどうかを確認します  

を使用しております 含むキー 特定のキーがマップに存在するかどうかを確認する方法。 この場合、Devが存在するため、trueが返され、Raviが存在しないため、falseが返されます。

同様に、 値を含む メソッドは、特定の値が存在するかどうかをチェックします。 ここでは、102は存在しますが、110は存在しないため、falseを返します。

import java.util.HashMap;
public class HashMapAdd {

  public static void main(String[] args) {
    HashMap<String,Integer> student = new HashMap<>();
    student.put("Arthi", 100);
    student.put("Dev", 105);
    student.put("Banu",102);
    student.put("Rishi", 108);
    System.out.println("Elements in student map:");
    System.out.println(student);
    
    System.out.println(student.containsKey("Dev"));
    System.out.println(student.containsKey("Ravi"));
    
    System.out.println(student.containsValue(102));
    System.out.println(student.containsValue(110));
  }

}
Elements in student map:
{Dev=105, Banu=102, Rishi=108, Arthi=100}
true
false
true
false

キーと値のペアを削除して置き換える  

ここでは、Javaで整数のハッシュマップを作成し、 文字列 言語を格納するために入力します。 2番目の値を新しいデータに置き換え、特定のキーと値のペアがマップに存在する場合は、を使用して3番目の値を置き換えます。 置換() 方法。

参照
JavaのLinkedBlockingDeque

次に、キーを使用して3番目の要素を削除し、キーを使用して1番目の要素を削除します。 削除する() 方法。

import java.util.HashMap;
public class RemoveHashMap {

  public static void main(String[] args) {
    HashMap<Integer,String> lang = new HashMap<>();
    lang.put(1, "Java");
    lang.put(2, "C");
    lang.putIfAbsent(3, "C++");
    System.out.println(lang);
    
    lang.replace(2, "PHP");
    System.out.println(lang);
    
    lang.replace(3, "C++", "JavaScript");
    System.out.println(lang);
    
    lang.remove(3);
    System.out.println(lang);
    
    lang.remove(1, "Java");		
    System.out.println(lang);
    
    
  }

}
{1=Java, 2=C, 3=C++}
{1=Java, 2=PHP, 3=C++}
{1=Java, 2=PHP, 3=JavaScript}
{1=Java, 2=PHP}
{2=PHP}

クリアメソッドとエンプティメソッドの例  

JavaのHashMapは 晴れ() マップ内のキーと値のペアのマッピングをクリアする方法と isEmpty メソッドは、マップが空かどうかをチェックします。 clear()メソッドを呼び出した後、マップにキーと値のペアがないため、最初の出力はfalseであり、1番目の出力はtrueです。

import java.util.HashMap;
public class RemoveHashMap {

  public static void main(String[] args) {
    HashMap<Integer,String> lang = new HashMap<>();
    lang.put(1, "Java");
    lang.put(2, "C");
    
    System.out.println(lang.isEmpty());
    lang.clear();
    
    System.out.println(lang.isEmpty());
    
  }

}
false
true

entrySetを使用してHashMap要素を反復処理する  

JavaでHashMapの個々のキーと値のペアを取得するには、 エントリーセット と一緒にHashMapのメソッド エントリー を使用したMapインターフェースのメソッド for-eachループ。 MapインターフェースのEntryメソッドには、次のような組み込みメソッドがあります。 geyKey() キーを取得し、 getValue() 対応する値を取得します。 使用できます サイズ() マップのサイズを取得するメソッド。

import java.util.HashMap;
import java.util.Map;
public class IterateHashMap {

  public static void main(String[] args) {
    HashMap<String,String> cityState = new HashMap<>();
    cityState.put("Bangalore", "Karnataka");
    cityState.put("Chennai", "TamilNadu");
    cityState.put("Madurai", "TamilNadu");
    cityState.put("Mumbai", "Maharashtra");
    
    System.out.println("Size of map is : " + cityState.size());
    
    for(Map.Entry<String,String> m : cityState.entrySet())
    {
      System.out.println(m.getKey() + " : " + m.getValue());
    }

  }

}
Size of map is : 4
Chennai : TamilNadu
Madurai : TamilNadu
Mumbai : Maharashtra
Bangalore : Karnataka

keySet()とvalues()を使用して要素をループします  

ハッシュマップ要素をループする別の方法は、 keySet() 方法。 これを使用すると、次の例に示すように、すべてのキーのセットを個別に取得できます。 すべての値を個別に取得するには、 値() メソッドを作成し、forループで出力します。

参照
JavaのBlockingQueueインターフェース

keySetを使用すると、forループを繰り返してキーと値のペアを出力することもできます。 取得する() 対応する値を取得するメソッド。

import java.util.HashMap;
import java.util.Map;
public class IterateHashMap {

  public static void main(String[] args) {
    HashMap<String,String> cityState = new HashMap<>();
    cityState.put("Bangalore", "Karnataka");
    cityState.put("Chennai", "TamilNadu");
    cityState.put("Madurai", "TamilNadu");
    cityState.put("Mumbai", "Maharashtra");
    
    System.out.println("Printing only keys:");
    for(String s : cityState.keySet())
    {
      System.out.println(s);
    }
    System.out.println();
    System.out.println("Printing only values: ");
    for(String c : cityState.values())
    {
      System.out.println(c);
    }
    System.out.println();
    System.out.println("Printing both key-value pairs:");
    for(String v : cityState.keySet())
    {
      System.out.println("Key: " + v + " | value: " + cityState.get(v));
    }
  }

}
Printing only keys:
Chennai
Madurai
Mumbai
Bangalore

Printing only values: 
TamilNadu
TamilNadu
Maharashtra
Karnataka

Printing both key-value pairs:
Key: Chennai | value: TamilNadu
Key: Madurai | value: TamilNadu
Key: Mumbai | value: Maharashtra
Key: Bangalore | value: Karnataka

結論  

このチュートリアルでは、HashMapとそのさまざまなメソッドについて、さまざまな例とともに学習しました。

参照