1.概念

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。

HashMap实现了Map接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步。

HashMap是无序的,即不会记录插入的顺序。

HashMap继承于AbstractMap,实现了MapCloneablejava.io.Serializable接口。

WV9wXLl

HashMapkeyvalue类型可以相同也可以不同,可以使字符串(String)类型的keyvalue,也可以是整型(Integer)类型的keyvalue

java-map

HashMap位于java.util包中,使用前需要引用它,语法格式如下:

1
import java.util.HashMap

以下实例我们创建一个HashMap对象map,整型(Integer)的key和字符串(String)类型的value.

1
HashMap<Integer, String> map = new HashMap<>();

2.操作

2.1 添加元素

HashMap 类提供了很多有用的方法,添加键值对(key-value)可以使用 put() 方法:

1
2
3
4
5
6
7
8
// 添加元素
public static void main(String[] args) {
HashMap<Integer, String> sites = new HashMap<>();
sites.put(1, "Google");
sites.put(2, "Taobao");
sites.put(3, "Zhihu");
System.out.println(sites);
}

执行以上代码,输出结果如下:

1
{1=Google, 2=Taobao, 3=Zhihu}

2.2 访问元素

我们可以使用 get(key) 方法来获取 key 对应的 value:

1
2
3
4
5
6
7
8
// 访问元素
public static void main(String[] args) {
HashMap<Integer, String> sites = new HashMap<>();
sites.put(1, "Google");
sites.put(2, "Taobao");
sites.put(3, "Zhihu");
System.out.println(sites.get(3));
}

执行以上代码,输出结果如下:

1
Zhihu

2.3 删除元素

我们可以使用remove(key)方法来删除 key 对应的键值对(key-value):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 删除元素
public static void main(String[] args) {
HashMap<Integer, String> sites = new HashMap<>();
sites.put(1, "Google");
sites.put(2, "Taobao");
sites.put(3, "Zhihu");

// 删除单个key-value
sites.remove(3);
System.out.println(sites);
System.out.println("-----------------");

// 删除所有key-value
sites.clear();
System.out.println(sites);
}

执行以上代码,输出结果如下:

1
2
3
{1=Google, 2=Taobao}
-----------------
{}

2.4 计算大小

如果要计算 HashMap 中的元素数量可以使用 size() 方法:

1
2
3
4
5
6
7
8
// 计算大小
public static void main(String[] args) {
HashMap<Integer, String> sites = new HashMap<>();
sites.put(1, "Google");
sites.put(2, "Taobao");
sites.put(3, "Zhihu");
System.out.println(sites.size());
}

执行以上代码,输出结果如下:

1
3

2.5 迭代HashMap

可以使用for-each来迭代HashMap中的元素。

如果你只想获取key,可以使用keySet()方法,然后通过get(Key)获取对应的value;如果你只想获取value,可以使用values()方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static void main(String[] args) {
HashMap<Integer, String> sites = new HashMap<>();
sites.put(1, "Google");
sites.put(2, "Taobao");
sites.put(3, "Zhihu");

// 输出key和value
for (Integer i : sites.keySet()) {
System.out.println("key:" + i + ", value:" + sites.get(i));
}
System.out.println("------------");

// 输出所有value
for (String value : sites.values()) {
System.out.println(value + ", ");
}
}

执行以上代码,输出结果如下:

1
2
3
4
5
6
7
key:1, value:Google
key:2, value:Taobao
key:3, value:Zhihu
------------
Google,
Taobao,
Zhihu,

3.Java HashMap方法

Java HashMap常用方法列表如下:

方法 描述
clear() 删除 hashMap 中的所有键/值对
clone() 复制一份 hashMap
isEmpty() 判断 hashMap 是否为空
size() 计算 hashMap 中键/值对的数量
put() 将键/值对添加到 hashMap 中
remove() 删除 hashMap 中指定键 key 的映射关系
get() 获取指定 key 对应对 value
keySet() 返回 hashMap 中所有 key 组成的集合视图。
values() 返回 hashMap 中存在的所有 value 值。