1.HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
2.HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。
3.HashMap 是无序的,即不会记录插入的顺序。
4.HashMap 继承于AbstractMap,实现了 Map、Cloneable java.io.Serializable 接口。
5.HashMap 的 key 与 value 类型可以相同也可以不同,可以是字符串(String)类型的 key 和 value,也可以是整型(Integer)的 key 和字符串(String)类型的 value。
K | Value |
---|---|
及时雨 (String) | 宋江 (String) |
10086 (Integer) | 中国移动 (String) |
public static void main(String[] args) {
HashMap<String,String> map = new HashMap<>();
map.put("及时雨","宋江");
System.out.println(map.get("及时雨"));
HashMap<Integer,String> map1 = new HashMap<>();
map1.put(10086,"中国移动");
System.out.println(map1.get(10086));
}
//拿到K值就有一个唯一对应的value值
宋江
中国移动
HashMap 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类。
基本类型对应的包装类表如下:
HashMap 类位于 java.util 包中,使用前需要引入它,语法格式如下:
import java.util.HashMap; // 引入 HashMap 类
以下实例我们创建一个 HashMap 对象 map, 整型(Integer)的 key 和字符串(String)类型的 value:
HashMap<Integer, String> map = new HashMap<Integer, String>();
添加元素
HashMap 类提供了很多有用的方法,添加键值对(key-value)可以使用 put() 方法:
// 引入 HashMap 类
import java.util.HashMap;
public class RunoobTest {
public static void main(String[] args) {
// 创建 HashMap 对象 map
HashMap<Integer, String> map = new HashMap<Integer, String>();
// 添加键值对
map.put(1, "Hello");
map.put(2, "java");
map.put(3, "ok");
map.put(4, "中国");
System.out.println(map);
}
}
运行结果:
{1=Hello, 2=java, 3=ok, 4=中国}
访问元素
我们可以使用 get(key) 方法来获取 key 对应的 value:
// 引入 HashMap 类
import java.util.HashMap;
public class RunoobTest {
public static void main(String[] args) {
// 创建 HashMap 对象 map
HashMap<Integer, String> map = new HashMap<Integer, String>();
// 添加键值对
map.put(1, "Hello");
map.put(2, "java");
map.put(3, "ok");
map.put(4, "中国");
System.out.println(map.get(3));
}
}
运行结果:
ok
删除元素
我们可以使用 remove(key) 方法来删除 key 对应的键值对(key-value):
// 引入 HashMap 类
import java.util.HashMap;
public class RunoobTest {
public static void main(String[] args) {
// 创建 HashMap 对象 map
HashMap<Integer, String> map = new HashMap<Integer, String>();
// 添加键值对
map.put(1, "Hello");
map.put(2, "java");
map.put(3, "ok");
map.put(4, "中国");
map.remove(4);
System.out.println(map);
}
}
运行结果:
{1=Hello, 2=java, 3=ok}
删除所有键值对(key-value)可以使用 clear 方法:
// 引入 HashMap 类
import java.util.HashMap;
public class RunoobTest {
public static void main(String[] args) {
// 创建 HashMap 对象 map
HashMap<Integer, String> map = new HashMap<Integer, String>();
// 添加键值对
map.put(1, "Hello");
map.put(2, "java");
map.put(3, "ok");
map.put(4, "中国");
map.clear();
System.out.println(map);
}
}
运行结果:
{}
迭代 HashMap
可以使用 for-each 来迭代 HashMap 中的元素。
如果你只想获取 key,可以使用 keySet() 方法,如果你只想获取 value,可以使用 values() 方法。
// 引入 HashMap 类
import java.util.HashMap;
public class RunoobTest {
public static void main(String[] args) {
// 创建 HashMap 对象 map
HashMap<Integer, String> map = new HashMap<Integer, String>();
// 添加键值对
map.put(1, "Hello");
map.put(2, "java");
map.put(3, "ok");
map.put(4, "中国");
// 输出 key 和 value
for (Integer i : map.keySet()) {
System.out.println("key: " + i + " value: " + map.get(i));
}
}
}
运行结果:
key: 1 value: Hello
key: 2 value: java
key: 3 value: ok
key: 4 value: 中国
Java HashMap 方法
Java HashMap 常用方法列表如下:
更多 API 方法可以查看:此链接