- java.util.Map<K,V>集合,里面保存的数据是成对存在的,称之为双列集合。存储的数据,我们称为键值对。之前所认识的Collection集合中元素是单个存在的,称为单列集合。
- Map<K,V> K: 键的数据类型, V:值的数据类型
- 键不能重复, 值可以重复
- 键和值是一一对应的, 通过键可以找到对应的值
- (键+值)一起是一个整体我们称之为”键值对”或者“键值对对象”, 在Java中叫做"Entry对象”。
- Map集合的常用实现类
- HashMap
- 此前的HashSet底层实现就是HashMap完成的, HashSet保存的元素其实就是HashMap集合中保存的键
- 底层结构是哈希表结构,具有键唯一, 无序的特点。
- 键唯一: 自定义类要重写hashCode()方法和equals()方法
- LinkedHashMap
- 底层结构是链表和哈希表结构
- 链表: 保证有序
- 哈希表: 保证键唯一
- TreeMap
- 底层是红黑树, 键唯一, 可以通过键来自定义排序
- 排序方式同TreeSet, 都支持自然排序和比较器排序

- Map集合中的常用方法
public V put(K key, V value)
public V remove(Object key)
public V get(Object key)
public Set<K> keySet()
public boolean containsKey(Object key)
- Map集合的遍历方式
- 键找值方式
- 先通过keySet()获取所有的键
- 遍历所有的键,通过键找到值
- 通过键值对对象进行遍历
- 调用map集合的entrySet()方法获取所有的键值对对象
- 遍历每一个键值对对象 (Entry对象)
- getKey()获取键,getValue()获取值
public class Test {
public static void main(String[] args) {
HashMap<Integer, String> hm = new HashMap<>();
hm.put(1, "张三");
hm.put(2, "李四");
hm.put(3, "王五");
System.out.println(hm.size());
Set<Integer> set = hm.keySet();
for (Integer key : set) {
System.out.println(key + " : " + hm.get(key));
}
System.out.println("==================================");
Set<Map.Entry<Integer, String>> entries = hm.entrySet();
for (Map.Entry<Integer, String> entry : entries) {
Integer key = entry.getKey();
String value = entry.getValue();
System.out.println(key + " : " + value);
}
System.out.println(hm.get(1));
System.out.println(hm.get(10));
System.out.println(hm.containsKey(10));
hm.remove(1);
System.out.println(hm);
}
}