一、介绍
概念
Map集合格式: {key1=value1,key2=value2,key3=value3,…}
二、Map集合的特点
Map家族图

1、说明:
2、体系特点:
三、Map集合API
由于Map集合是双列集合的父接口,它的功能为所有双列集合通用功能。
常用方法API
| 方法 | 说明 |
|---|---|
| V put(K key,V value) | 添加元素 |
| V remove(Object key) | 根据键删除元素 |
| V get(Object key) | 根据键获取元素 |
| void clear() | 清空集合 |
| boolean containsKey(Object key) | 判断集合中是否包含指定的键 |
| boolean containsValue(Object value) | 判断集合中是否包含指定的值 |
| Set keySet() | 获取集合中所有的键 |
| Collection values() | 获取集合中所有的值 |
| boolean isEmpty() | 判断集合是否为空 |
| int size() | 获取集合长度 |
| Map | 合并集合 |
四、Map的遍历方法
1、键找值
主要用于对象-value的键值对集合。
(1)流程
(2)示例
class Main{
public static void main(String[] args) {
/*查找商品名为goods3的价格是多少?*/
Map<String,Double> map = new HashMap<>();
map.put("goods1",30.7);
map.put("goods2",62.5);
map.put("goods3",20.8);
map.put("goods4",78.5);
for (String key : map.keySet()) {
if (key.equals("goods3")){
System.out.println(map.get(key));
break;
}
}
}
}
/*打印结果*/
20.8
2、键值对
主要用于对象-value的键值对集合。
(1)流程
(2)示例
Map<String,Double> map = new HashMap<>();
map.put("goods1",30.7);
map.put("goods2",62.5);
map.put("goods3",20.8);
map.put("goods4",78.5);
/*获取键值对对象*/
Set<Map.Entry<String, Double>> entries = map.entrySet();
/*遍历获取键与值*/
for (Map.Entry<String, Double> entry : entries) {
System.out.println(entry.getKey() + "==>" + entry.getValue());
}
/*打印结果*/
goods1==>30.7
goods4==>78.5
goods3==>20.8
goods2==>62.5
3、lambda表达式
(1)示例
Map<String,Double> map = new HashMap<>();
map.put("goods1",30.7);
map.put("goods2",62.5);
map.put("goods3",20.8);
map.put("goods4",78.5);
map.forEach((k,v)-> System.out.println(k + "==>" + v));
/*打印结果*/
goods1==>30.7
goods4==>78.5
goods3==>20.8
goods2==>62.5
五、Map的三种实现类
1、HashMap
特点: 无序、不重复、无索引,依赖hashCode()和equals()保证键的唯一。若键要存储自定义对象,需要重写hashCode()和equals()。
底层: Hash表,每个元素包含两个数据
2、LinkedHashMap
特点: 有序、不重复、无索引,保证存储和取出的元素顺序一致。
底层: Hash表,双链表机制记录存储顺序。
3、TreeMap
特点: 可排序、不重复、无索引,只对键数据默认升序排序或自定义排序。
底层: 与TreeSet底层相同。
实现排序的方式: