集合进阶-map

Map集合的概述和使用

Map集合概述

  • Interface Map<K,V> K:键的类型 V:值的类型
  • 将键映射到值的对象;不能包含重复的键;每个键可以映射到最多一个值
  • 举例,学生的学号(键)和姓名(值)

创建Map集合的对象

  • 使用多态的方式
  • 具体的实现类 HashMap

Map基本功能

方法名 说明
V put(K key,V value) 添加元素(也可以更新指定键的值)
V remove(Object key) 根据键删除值(返回键被删除的值)
void clear() 移除所有键值元素
boolean containsKey(Object key) 判断集合中是否包含指定的键
boolean containsValue(Object value) 判断集合是否包含指定的值
boolean isEmpty() 判断集合是否为空
int size() 集合的长度(集合中键值对的个数)

Map集合的获取功能

方法名 说明
V get(Object key) 根据键获取值
Set keySet() 获取所有键的集合
Collection values() 获取所有值的集合
Set<Map.Entry<K,V>> entrySet() 获取所有键值对 对象的集合

注:keySet和values方法的返回值是Set接口实现类和Collection接口实现类的具体对象

Map集合的遍历

方法一
  • 获取所有键的集合,使用keySet()方法实现
  • 遍历这个集合
  • 利用get(Object key)方法在集合中获取到每一个键的值
1
2
3
4
5
6
7
8
9
10
11
12
public class Test {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("no1", "Xiaobai");
map.put("no2", "Xiaoxue");
map.put("no3", "Xiaokai");
Set<String> keyset = map.keySet();
for (String s : keyset) {
System.out.println(s + " " + map.get(s));
}
}
}

方法二
  • 获取所有键值对 对象的集合,使用entrySet()方法实现
  • 遍历键值对 对象的集合,得到每一个键值对 对象
  • 使用getKey()得到键,使用getValue得到值
1
2
3
4
5
6
7
8
9
10
11
12
public class Test2 {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("no1", "Xiaobai");
map.put("no2", "Xiaoxue");
map.put("no3", "Xiaokai");
Set<Map.Entry<String, String>> entrySet = map.entrySet();
for (Map.Entry<String, String> me : entrySet) {
System.out.println(me.getKey() + " " + me.getValue());
}
}
}

Map补充

HashMap实现类中重写了toString方法,输出格式为 键=值

当key为引用类型对象时,我们需要在类中重写hashCode和equals方法才能保证键唯一性

Map中如果想要实现按键值有序排列元素,可以使用TreeMap实现类


集合进阶-map
http://blog.170827.xyz/2022/08/25/集合进阶-map/
作者
XIAOBAI
发布于
2022年8月25日
许可协议