Java HashMap
Java HashMap
在本教程中,我们将通过示例了解 Java HashMap 类及其各种操作。
HashMap
Java集合框架的类提供了哈希表数据结构的功能。
它将元素存储在 key/value 中 对。在这里,键 是用于关联每个值的唯一标识符 在地图上。
HashMap
类实现了 Map 接口。
创建一个HashMap
为了创建哈希映射,我们必须导入 java.util.HashMap
先打包。导入包后,下面是我们如何在 Java 中创建哈希图。
// hashMap creation with 8 capacity and 0.6 load factor
HashMap<K, V> numbers = new HashMap<>();
在上面的代码中,我们创建了一个名为 numbers 的 hashmap .这里,K 表示键类型和V 表示值的类型。例如,
HashMap<String, Integer> numbers = new HashMap<>();
这里,keys 的类型 是 String
以及值的类型 是 Integer
.
示例 1:在 Java 中创建 HashMap
import java.util.HashMap;
class Main {
public static void main(String[] args) {
// create a hashmap
HashMap<String, Integer> languages = new HashMap<>();
// add elements to hashmap
languages.put("Java", 8);
languages.put("JavaScript", 1);
languages.put("Python", 3);
System.out.println("HashMap: " + languages);
}
}
输出
HashMap: {Java=8, JavaScript=1, Python=3}
在上面的例子中,我们创建了一个 HashMap
命名为语言 .
在这里,我们使用了 put()
将元素添加到 hashmap 的方法。我们将详细了解 put()
本教程后面的方法。
Java HashMap 的基本操作
HashMap
类提供了各种方法来对 hashmap 执行不同的操作。我们将在本教程中看一些常用的arraylist操作:
- 添加元素
- 访问元素
- 改变元素
- 移除元素
1。向 HashMap 添加元素
要将单个元素添加到 hashmap,我们使用 put()
HashMap
的方法 班级。例如,
import java.util.HashMap;
class Main {
public static void main(String[] args) {
// create a hashmap
HashMap<String, Integer> numbers = new HashMap<>();
System.out.println("Initial HashMap: " + numbers);
// put() method to add elements
numbers.put("One", 1);
numbers.put("Two", 2);
numbers.put("Three", 3);
System.out.println("HashMap after put(): " + numbers);
}
}
输出
Initial HashMap: {} HashMap after put(): {One=1, Two=2, Three=3}
在上面的例子中,我们创建了一个 HashMap
命名为 数字 .在这里,我们使用了 put()
向数字添加元素的方法。
注意声明,
numbers.put("One", 1);
在这里,我们传递 String
值 一个 作为键和 Integer
值 1 作为 put()
的值 方法。
推荐读物
- Java HashMap put()
- Java HashMap putAll()
- Java HashMap putIfAbsent()
2。访问 HashMap 元素
我们可以使用 get()
从 hashmap 访问值的方法。例如,
import java.util.HashMap;
class Main {
public static void main(String[] args) {
HashMap<Integer, String> languages = new HashMap<>();
languages.put(1, "Java");
languages.put(2, "Python");
languages.put(3, "JavaScript");
System.out.println("HashMap: " + languages);
// get() method to get value
String value = languages.get(1);
System.out.println("Value at index 1: " + value);
}
}
输出
HashMap: {1=Java, 2=Python, 3=JavaScript} Value at index 1: Java
在上面的例子中,注意表达式,
languages.get(1);
在这里,get()
方法采用 key 作为其参数并返回相应的值 与键关联。
我们还可以访问 keys , 值 , 和 键/值 使用 keySet()
将哈希图对作为集合视图 , values()
, 和 entrySet()
方法分别。例如,
import java.util.HashMap;
class Main {
public static void main(String[] args) {
HashMap<Integer, String> languages = new HashMap<>();
languages.put(1, "Java");
languages.put(2, "Python");
languages.put(3, "JavaScript");
System.out.println("HashMap: " + languages);
// return set view of keys
// using keySet()
System.out.println("Keys: " + languages.keySet());
// return set view of values
// using values()
System.out.println("Values: " + languages.values());
// return set view of key/value pairs
// using entrySet()
System.out.println("Key/Value mappings: " + languages.entrySet());
}
}
输出
HashMap: {1=Java, 2=Python, 3=JavaScript} Keys: [1, 2, 3] Values: [Java, Python, JavaScript] Key/Value mappings: [1=Java, 2=Python, 3=JavaScript]
在上面的例子中,我们创建了一个名为 languages 的 hashmap .在这里,我们正在访问 keys , 值 , 和 键/值 来自 hashmap 的映射。
推荐读物
- Java HashMap get()
- Java Hashmap getOrDefault()
- Java HashMap keySet()
- Java HashMap 值()
- Java HashMap entrySet()
3。更改 HashMap 值
我们可以使用 replace()
方法来更改与哈希图中的键关联的值。例如,
import java.util.HashMap;
class Main {
public static void main(String[] args) {
HashMap<Integer, String> languages = new HashMap<>();
languages.put(1, "Java");
languages.put(2, "Python");
languages.put(3, "JavaScript");
System.out.println("Original HashMap: " + languages);
// change element with key 2
languages.replace(2, "C++");
System.out.println("HashMap using replace(): " + languages);
}
}
输出
Original HashMap: {1=Java, 2=Python, 3=JavaScript} HashMap using replace(): {1=Java, 2=C++, 3=JavaScript}
在上面的例子中,我们创建了一个名为 languages 的 hashmap .注意表达式,
languages.replace(2, "C++");
在这里,我们正在更改键 2 引用的值 使用新值 C++ .
HashMap
类还提供了 replace()
的一些变体 方法。要了解更多信息,请访问
- Java HashMap 替换()
- Java HashMap replaceAll()
4。移除 HashMap 元素
要从哈希图中删除元素,我们可以使用 remove() 方法。例如,
import java.util.HashMap;
class Main {
public static void main(String[] args) {
HashMap<Integer, String> languages = new HashMap<>();
languages.put(1, "Java");
languages.put(2, "Python");
languages.put(3, "JavaScript");
System.out.println("HashMap: " + languages);
// remove element associated with key 2
String value = languages.remove(2);
System.out.println("Removed value: " + value);
System.out.println("Updated HashMap: " + languages);
}
}
输出
HashMap: {1=Java, 2=Python, 3=JavaScript} Removed value: Python Updated HashMap: {1=Java, 3=JavaScript}
在这里,remove()
方法采用 key 作为它的参数。然后它返回 值 与键相关联 并删除 entry .
我们也可以仅在某些条件下删除条目。例如,
remove(2, "C++");
这里,remove()
方法只删除 entry 如果 键 2 与 值 C++ 相关联 .自2 与 C++ 无关 ,它不会删除条目。
要了解更多信息,请访问 Java HashMap remove()。
HashMap的其他方法
方法 | 说明 |
---|---|
clear() | 从 HashMap 中删除所有映射 |
计算() | 为指定的键计算一个新值 |
computeIfAbsent() | 如果键的映射不存在则计算值 |
computeIfPresent() | 如果键存在则计算映射值 |
合并() | 将指定的映射合并到HashMap |
克隆() | 复制HashMap |
containsKey() | 检查指定的键是否存在于Hashmap中 |
containsValue() | 检查是否为 Hashmap 包含指定值 |
尺寸() | 返回HashMap 中的项目数 |
isEmpty() | 检查 Hashmap 是空的 |
遍历一个HashMap
要遍历 hashmap 的每个条目,我们可以使用 Java for-each 循环。我们只能遍历 keys , 仅限数值 , 和 键/值映射 .例如,
import java.util.HashMap;
import java.util.Map.Entry;
class Main {
public static void main(String[] args) {
// create a HashMap
HashMap<Integer, String> languages = new HashMap<>();
languages.put(1, "Java");
languages.put(2, "Python");
languages.put(3, "JavaScript");
System.out.println("HashMap: " + languages);
// iterate through keys only
System.out.print("Keys: ");
for (Integer key : languages.keySet()) {
System.out.print(key);
System.out.print(", ");
}
// iterate through values only
System.out.print("\nValues: ");
for (String value : languages.values()) {
System.out.print(value);
System.out.print(", ");
}
// iterate through key/value entries
System.out.print("\nEntries: ");
for (Entry<Integer, String> entry : languages.entrySet()) {
System.out.print(entry);
System.out.print(", ");
}
}
}
输出
HashMap: {1=Java, 2=Python, 3=JavaScript} Keys: 1, 2, 3, Values: Java, Python, JavaScript, Entries: 1=Java, 2=Python, 3=JavaScript,
请注意,我们使用了 Map.Entry
在上面的例子中。它是 Map
的嵌套类 返回地图视图(元素)的接口。
我们首先需要导入 java.util.Map.Entry
包以便使用这个类。
这个嵌套类返回地图的视图(元素)。
从其他地图创建 HashMap
在 Java 中,我们还可以从其他映射创建哈希映射。例如,
import java.util.HashMap;
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
// create a treemap
TreeMap<String, Integer> evenNumbers = new TreeMap<>();
evenNumbers.put("Two", 2);
evenNumbers.put("Four", 4);
System.out.println("TreeMap: " + evenNumbers);
// create hashmap from the treemap
HashMap<String, Integer> numbers = new HashMap<>(evenNumbers);
numbers.put("Three", 3);
System.out.println("HashMap: " + numbers);
}
}
输出
TreeMap: {Four=4, Two=2} HashMap: {Two=2, Three=3, Four=4}
在上面的例子中,我们创建了一个 TreeMap
命名为 evenNumbers
.注意表达式,
numbers = new HashMap<>(evenNumbers)
在这里,我们正在创建一个 HashMap
使用 TreeMap
命名的数字 .要了解有关树形图的更多信息,请访问 Java TreeMap。
注意 :在创建 hashmap 时,我们可以包含可选参数:容量 和负载系数 .例如,
HashMap<K, V> numbers = new HashMap<>(8, 0.6f);
在这里,
- 8 (容量为 8)- 这意味着它可以存储 8 个条目。
- 0.6f (负载因子为 0.6)- 这意味着每当我们的哈希表被填充 60% 时,条目就会被移动到一个新的哈希表,该哈希表的大小是原始哈希表的两倍。
如果不使用可选参数,则默认容量 将是 16 和默认的负载系数 将是 0.75 .
java