一、Map
(一)概述
1、体系位置:双列集合的顶层接口
2、类比理解:单词含义:地图,在地图上的每一个点,都表示生活中的一个具体位置。地图的点和生活中的位置,有一一对应的关系,这种关系是通过穷举罗列的。
3、数据结构:描述的是一个数据(Key)到另一个数据(Value)的映射关系
(1)Key(键):有规律的,容易记忆的,是一个简单的数据
(2)Value(值):没有规律,不容易记忆,复杂的数据
(3)操作:通过Key来寻找Value
4、映射:对应关系
(1)数学:y = x * x
(2)穷举罗列:{1=1, 2=4, 3=9, 4=16}
5、Java中的Map集合就是通过穷举罗列的方式来表示的
6、Map集合的特点:
(1)Key是唯一的,不能重复
(2)Value是不唯一的,一个Key只能对应一个Value
(3)每一个键都只能对应一个值
7、Map和Collection的区别:
(1)Map是双列集合,是一个接口
(2)Collection是单列集合,是一个接口
(3)Map的所有操作都是针对键的
代码示例
import java.util.HashMap;
import java.util.Map;
public class Demo01_Map {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
map.put("abc", "qwe");
map.put("abc", "123");
map.put("zxc", "qwert");
System.out.println(map);
}
}
(二)Map集合的常用方法
1、put(K key, V value) :添加功能(集合中不存在指定的键时),将键值对添加到指定集合中;修改功能(当集合中已经存在指定的键),根据键,修改其对应的值
2、remove(Object key) 根据键,删除键值对;如果键不存在,则不作操作;如果键存在,删除键值对且返回键对应的值
3、clear() 清空集合
4、size() 返回集合中键值对个数
5、get(Object key) 根据键获取对应的值,如果键不存在,则返回null
6、containsKey(Object key) 判断集合是否包含指定键
7、containsValue(Object value) 判断集合是否包含指定值
代码示例
import java.util.HashMap;
import java.util.Map;
public class Demo02_Method {
public static void main(String[] args) {
//键不能重复,且是无序的
//值可以重复
Map<Integer, String> map = new HashMap<>();
map.put(111, "aaa");
map.put(-8, "aaa");
map.put(97, "bbb");
map.put(97, "hello");
map.put(23, "bbb");
map.put(123456, "qwerty");
System.out.println(map.containsKey(111));
System.out.println(map.containsKey(1111));
System.out.println(map.containsValue("aaa"));
System.out.println(map.containsValue("aaabbb"));
/*System.out.println(map.get(97));
System.out.println(map.get(1111));*/
//System.out.println(map.size());
/*System.out.println(map);
System.out.println(map.remove(23));
map.remove(1111);
System.out.println(map);
map.clear();
System.out.println(map);*/
}
}
(三)Map集合的第一种遍历思路
1、获取Map集合中所有的键,存储到一个set集合中,之后遍历set集合,根据键获取值
2、获取Map集合中所有的键:Set keySet()方法
3、遍历Set集合:
(1)迭代器遍历
(2)增强for循环遍历
4、获取到每个键之后,根据键获取值:V get(Object key)
5、图示:
6、特点:遍历Set集合拿到键之后,还是需要通过map集合获取键对应的值
代码示例
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Demo03_PringMapFirstWay {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(111, "aaa");
map.put(-8, "aaa");
map.put(97, "bbb");
map.put(97, "