[TIL] HashMap
HashMapとは?
2.HashMap作成者/方法
HashMap作成者
HashMap<String, String> map1 = new HashMap<String, String>(); // new에서 타입 파라미터 생략 가능
HashMap<String, String> map2 = new HashMap<>(map1); // map1의 모든 값을 다 포함한 HashMap 생성
HashMap<String, String> map3 = new HashMap<>(5); // 초기 사이즈 지정
HashMap<String, String> map4 = new HashMap<>() {{
put("a", "apple");
}}; // 초기 값 지정
HashMapの値がストレージ容量を超えると、容量が増加するのではなく、増加します.したがって、初期格納されたデータ数がわかる場合は、初期サイズを指定することが望ましい.put() / get()
put()
はkeyとvalueのペアのデータを格納し、get()
はパラメータとして渡されたkeyに対応する値を返す.キーが存在しない場合はnullを返します.
HashMap<String, String> map = new HashMap<>();
map.put("a", "apple");
map.put("b", "banana");
map.put("c", "carrot");
map.put("a", "ant");
System.out.println(map.get("a"));
System.out.println(map.get("b"));
System.out.println(map.get("d"));
<出力>ant
banana
null
remove() / clear()
remove()
パラメータとして渡された鍵の値を返し、データを削除する.データが存在しない場合はnullを返します.clear()
HashMapのすべてのデータが削除されます.System.out.println(map.remove("a"));
System.out.println(map.remove("c"));
System.out.println(map.remove("z"));
System.out.println(map);
<出力>apple
carrot
null
map: {b=banana}
isEmpty()
isEmpty()
HashMapのデータが空の場合、trueまたはfalseが返されます.HashMap<String, String> map = new HashMap<>();
map.put("a", "apple");
map.put("b", "banana");
map.put("c", "carrot");
System.out.println(map.isEmpty());
map.clear();
System.out.println(map.isEmpty());
<出力>false
true
containsKey() / containsValue()
containsKey()
およびcontainsValue()
は、パラメータとして渡されるキー/値を返し、HashMapに存在する場合はtrueまたはfalseとなる.HashMap<String, String> map = new HashMap<>();
map.put("a", "apple");
map.put("b", "banana");
map.put("c", "carrot");
System.out.println(map.containsKey("a"));
System.out.println(map.containsValue("carrot"));
System.out.println(map.containsValue("tomato"));
<出力>true
true
false
keySet() / values() / entrySet()
keySet()
HashMapからのみ鍵をインポートし、values()
HashMapからvalueをインポートし、entrySet()
keyとvalueをインポートします.主に複文を使用して全体の出力/ブラウズに使用されます.HashMap<String, String> map = new HashMap<>();
map.put("a", "apple");
map.put("b", "banana");
map.put("c", "carrot");
for (String key : map.keySet()) {
System.out.print(map.get(key) + " ");
}
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry);
}
<出力>a b c
a=apple
b=banana
c=carrot
replace()
replace()
パラメータとして渡されたkeyのvalueをパラメータとして渡されたvalueに置き換える.置換および削除された値が返され、存在しないキーがパラメータとして渡されるとnullが返されます.HashMap<String, String> map = new HashMap<>();
map.put("a", "apple");
map.put("b", "banana");
map.put("c", "carrot");
System.out.println(map.replace("a", "ant"));
System.out.println(map.replace("z", "zero"));
System.out.println(map);
<出力>apple
null
map: {b=banana, a=ant, c=carrot}
getOrDefault() / putIfAbsent() / computeIfAbsent() / computeIfPresent()
getOrDefault(Object Key, Object defaultValue)
:渡された鍵が存在する場合、その鍵の値が返され、存在しない場合、設定されたデフォルト値が返されます.ただし、この値はmapには格納されません.Map<String, String> map = new HashMap<>();
map.put("a", "apple");
map.put("b", "banana");
System.out.println(map.getOrDefault("a", "fruit"));
System.out.println(map.getOrDefault("z", "fruit"));
for (char c : map.keySet() ) {
System.out.printf("%s %s\n", c, map.get(c));
}
<出力>apple
fruit
a apple
b banana
putIfAbsent(Object Key, Object Value)
:キーに値がない場合、またはnullの場合、値が追加されます.上記と同様にgetOrDefaultは値を保存せず、putIfAbserverはmapに追加されます.Map<String, String> map = new HashMap<>();
map.put("a", "apple");
map.put("b", "banana");
System.out.println(map.putIfAbsent("a", "fruit"));
System.out.println(map.putIfAbsent("z", "fruit"));
for (char c : map.keySet() ) {
System.out.printf("%s %s\n", c, map.get(c));
}
<出力>apple
fruit
a apple
b banana
z fruit
compute()
:キー値の演算方法を定義します.存在しない鍵を受け取った場合、エラーが発生します.Map<String, Integer> map = new HashMap<>();
map.put("a", 0);
map.put("b", 0);
System.out.println(map.compute("a", (k, v) -> ++v));
for (char c : map.keySet() ) {
System.out.printf("%c %d\n", c, map.get(c));
}
<出力>1
a 1
b 0
computeIfAbsent()
:キーの値が存在しない場合のみ関数を実行し、キーの値が存在する場合は既存のキーの値を返しますMap<String, Integer> map = new HashMap<>();
map.put("a", 0);
map.put("b", 0);
System.out.println(map.computeIfAbsent("a", key -> 10));
System.out.println(map.computeIfAbsent("f", key -> 10));
for (char c : map.keySet() ) {
System.out.printf("%c %d\n", c, map.get(c));
}
<出力>0
10
a 0
b 0
f 10
computeIfPresent()
:ram多項式は、キーの値が存在する場合にのみ実行されます.キーの値が存在しない場合はnullを返します.Map<String, Integer> map = new HashMap<>();
map.put("a", 0);
map.put("b", 0);
System.out.println(map.computeIfPresent("a", (k, v) -> ++v));
System.out.println(map.computeIfPresent("f", (k, v) -> ++v));
for (char c : map.keySet() ) {
System.out.printf("%c %d\n", c, map.get(c));
}
<出力>1
null
a 1
b 0
Reference
この問題について([TIL] HashMap), 我々は、より多くの情報をここで見つけました https://velog.io/@dailyhyun/TIL-HashMapテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol