ジャワ ハッシュマップ クラスは Map インターフェイスを実装します。 キーと値のペアを保存する 、キーは一意である必要があります。重複キーを挿入しようとすると、対応するキーの要素が置き換えられます。更新や削除など、キーインデックスを使用した操作を簡単に実行できます。 HashMap クラスはjava.utilパッケージ。
Java の HashMap は従来の Hashtable クラスに似ていますが、同期されていません。 null 要素も格納できますが、null キーは 1 つだけである必要があります。 Java 5 以降は、次のように表記されます。ハッシュマップここで、K はキー、V は値を表します。 AbstractMap クラスを継承し、Map インターフェイスを実装します。
留意すべき点
- Java HashMap には、キーに基づいた値が含まれています。
- Java HashMap には一意のキーのみが含まれます。
- Java HashMap には、1 つの null キーと複数の null 値が含まれる場合があります。
- Java HashMap は同期されていません。
- Java HashMap は順序を維持しません。
- Java HashMap クラスの初期デフォルト容量は 16 で、負荷係数は 0.75 です。
HashMapクラスの階層
上図に示すように、HashMap クラスは AbstractMap クラスを拡張し、Map インターフェイスを実装します。
HashMap クラス宣言
java.util.HashMap クラスの宣言を見てみましょう。
Java文字列の追加
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable
HashMap クラスのパラメータ
java.util.HashMap クラスのパラメータを見てみましょう。
Java HashMap クラスのコンストラクター
コンストラクタ | 説明 |
---|---|
ハッシュマップ() | これは、デフォルトの HashMap を構築するために使用されます。 |
HashMap(マップメートル) | これは、指定された Map オブジェクト m の要素を使用してハッシュ マップを初期化するために使用されます。 |
HashMap(int 容量) | これは、ハッシュ マップの容量を指定された整数値、capacity に初期化するために使用されます。 |
HashMap(int 容量、float ロードファクター) | これは、引数を使用してハッシュ マップの容量と負荷係数の両方を初期化するために使用されます。 |
Java HashMap クラスのメソッド
方法 | 説明 |
---|---|
ボイドクリア() | このマップからすべてのマッピングを削除するために使用されます。 |
ブール値 isEmpty() | このマップにキーと値のマッピングが含まれていない場合に true を返すために使用されます。 |
オブジェクトクローン() | これは、この HashMap インスタンスの浅いコピーを返すために使用されます。キーと値自体は複製されません。 |
セットentrySet() | このマップに含まれるマッピングのコレクション ビューを返すために使用されます。 |
keySet() を設定します | このマップに含まれるキーのセット ビューを返すために使用されます。 |
V put(オブジェクトキー, オブジェクト値) | マップにエントリを挿入するために使用されます。 |
void putAll(マップマップ) | 指定したマップをマップに挿入するために使用されます。 |
V putIfAbsent(K キー, V 値) | まだ指定されていない場合にのみ、指定された値と指定されたキーがマップに挿入されます。 |
V 削除(オブジェクトキー) | 指定したキーのエントリを削除するために使用されます。 |
ブール値の削除(オブジェクトのキー、オブジェクトの値) | 指定された値と関連付けられた指定されたキーをマップから削除します。 |
V compute(K キー、BiFunction remappingFunction) | これは、指定されたキーとその現在のマップ値 (または、現在のマッピングがない場合は null) のマッピングを計算するために使用されます。 |
V computeIfAbsent(K キー、関数マッピング関数) | これは、指定されたキーがまだ値に関連付けられていない (または null にマップされている) 場合に、指定されたマッピング関数を使用してその値を計算するために使用され、null でない限りその値をこのマップに入力します。 |
V computeIfPresent(K キー、BiFunction remappingFunction) | これは、指定されたキーの値が存在し、null でない場合に、キーとその現在マップされた値を指定して新しいマッピングを計算するために使用されます。 |
ブール値 containsValue(オブジェクト値) | このメソッドは、値と等しい値がマップ内に存在する場合は true を返し、それ以外の場合は false を返します。 |
ブール値 containsKey(オブジェクト キー) | このメソッドは、キーと等しいキーがマップ内に存在する場合は true を返し、それ以外の場合は false を返します。 |
ブール値等しい(オブジェクト o) | 指定されたオブジェクトとマップを比較するために使用されます。 |
void forEach(BiConsumer アクション) | すべてのエントリが処理されるか、アクションが例外をスローするまで、マップ内の各エントリに対して指定されたアクションを実行します。 |
V get(オブジェクトキー) | このメソッドは、キーに関連付けられた値を含むオブジェクトを返します。 |
V getOrDefault(オブジェクトキー, VdefaultValue) | 指定されたキーがマップされている値を返します。マップにキーのマッピングが含まれていない場合は、defaultValue を返します。 |
ブール値 isEmpty() | このメソッドは、マップが空の場合は true を返します。少なくとも 1 つのキーが含まれている場合は false を返します。 |
Vマージ(Kキー、V値、BiFunctionリマッピング関数) | 指定されたキーがまだ値に関連付けられていない場合、または null に関連付けられている場合は、そのキーを指定された null 以外の値に関連付けます。 |
V replace(Kキー、V値) | 指定されたキーの指定された値を置き換えます。 |
boolean replace(K キー、V oldValue、V newValue) | 指定されたキーの古い値を新しい値に置き換えます。 |
void replaceAll(BiFunction 関数) | すべてのエントリが処理されるか、関数が例外をスローするまで、各エントリの値をそのエントリに対して指定された関数を呼び出した結果に置き換えます。 |
コレクションの値() | マップに含まれる値のコレクション ビューを返します。 |
int サイズ() | このメソッドは、マップ内のエントリの数を返します。 |
Java ハッシュマップの例
キーと値のペアを保存する HashMap の簡単な例を見てみましょう。
import java.util.*; public class HashMapExample1{ public static void main(String args[]){ HashMap map=new HashMap();//Creating HashMap map.put(1,'Mango'); //Put elements in Map map.put(2,'Apple'); map.put(3,'Banana'); map.put(4,'Grapes'); System.out.println('Iterating Hashmap...'); for(Map.Entry m : map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }今すぐテストしてください
Iterating Hashmap... 1 Mango 2 Apple 3 Banana 4 Grapes
この例では、キーとして整数、値として文字列を格納しているため、ハッシュマップタイプとしては。の置く()メソッドはマップに要素を挿入します。
キー要素と値要素を取得するには、getKey() メソッドと getValue() メソッドを呼び出す必要があります。のマップ.エントリインターフェイスには、 getKey() そして getValue() 方法。ただし、Map.Entryのインスタンスを取得するには、MapインターフェースのentrySet()メソッドを呼び出す必要があります。
HashMap に重複キーなし
HashMap には重複したキーを保存できません。ただし、重複キーを別の値で保存しようとすると、値が置き換えられます。
import java.util.*; public class HashMapExample2{ public static void main(String args[]){ HashMap map=new HashMap();//Creating HashMap map.put(1,'Mango'); //Put elements in Map map.put(2,'Apple'); map.put(3,'Banana'); map.put(1,'Grapes'); //trying duplicate key System.out.println('Iterating Hashmap...'); for(Map.Entry m : map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }今すぐテストしてください
Iterating Hashmap... 1 Grapes 2 Apple 3 Banana
add() 要素を使用する Java HashMap の例
ここでは、要素を挿入するさまざまな方法を見ていきます。
import java.util.*; class HashMap1{ public static void main(String args[]){ HashMap hm=new HashMap(); System.out.println('Initial list of elements: '+hm); hm.put(100,'Amit'); hm.put(101,'Vijay'); hm.put(102,'Rahul'); System.out.println('After invoking put() method '); for(Map.Entry m:hm.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } hm.putIfAbsent(103, 'Gaurav'); System.out.println('After invoking putIfAbsent() method '); for(Map.Entry m:hm.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } HashMap map=new HashMap(); map.put(104,'Ravi'); map.putAll(hm); System.out.println('After invoking putAll() method '); for(Map.Entry m:map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }
Initial list of elements: {} After invoking put() method 100 Amit 101 Vijay 102 Rahul After invoking putIfAbsent() method 100 Amit 101 Vijay 102 Rahul 103 Gaurav After invoking putAll() method 100 Amit 101 Vijay 102 Rahul 103 Gaurav 104 Ravi
() 要素を削除する Java HashMap の例
ここでは、要素を削除するさまざまな方法を見ていきます。
import java.util.*; public class HashMap2 { public static void main(String args[]) { HashMap map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); map.put(103, 'Gaurav'); System.out.println('Initial list of elements: '+map); //key-based removal map.remove(100); System.out.println('Updated list of elements: '+map); //value-based removal map.remove(101); System.out.println('Updated list of elements: '+map); //key-value pair based removal map.remove(102, 'Rahul'); System.out.println('Updated list of elements: '+map); } }
出力:
Initial list of elements: {100=Amit, 101=Vijay, 102=Rahul, 103=Gaurav} Updated list of elements: {101=Vijay, 102=Rahul, 103=Gaurav} Updated list of elements: {102=Rahul, 103=Gaurav} Updated list of elements: {103=Gaurav}
replace() 要素を使用する Java HashMap の例
ここでは、要素を置換するさまざまな方法を見ていきます。
import java.util.*; class HashMap3{ public static void main(String args[]){ HashMap hm=new HashMap(); hm.put(100,'Amit'); hm.put(101,'Vijay'); hm.put(102,'Rahul'); System.out.println('Initial list of elements:'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replace(102, 'Gaurav'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replace(101, 'Vijay', 'Ravi'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replaceAll((k,v) -> 'Ajay'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } } }
Initial list of elements: 100 Amit 101 Vijay 102 Rahul Updated list of elements: 100 Amit 101 Vijay 102 Gaurav Updated list of elements: 100 Amit 101 Ravi 102 Gaurav Updated list of elements: 100 Ajay 101 Ajay 102 Ajay
HashSet と HashMap の違い
HashSet には値のみが含まれますが、HashMap にはエントリ (キーと値) が含まれます。
Java HashMap の例: 書籍
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class MapExample { public static void main(String[] args) { //Creating map of Books Map map=new HashMap(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications & Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to map map.put(1,b1); map.put(2,b2); map.put(3,b3); //Traversing map for(Map.Entry entry:map.entrySet()){ int key=entry.getKey(); Book b=entry.getValue(); System.out.println(key+' Details:'); System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } }今すぐテストしてください
出力:
1 Details: 101 Let us C Yashwant Kanetkar BPB 8 2 Details: 102 Data Communications and Networking Forouzan Mc Graw Hill 4 3 Details: 103 Operating System Galvin Wiley 6
関連トピック
HashMap の負荷率
Java での HashMap の動作 |ハッシュマップの仕組み
HashMap を値で並べ替える方法
Javaでのcsvファイルの読み込み