Map集合体系
Map集合概述
Map集合是一种 双列集合 每个元素包含两个数据
Map集合的每个元素格式: key = value (键值对元素)
Map集合也被称为 "键值对集合"
Map集合整体格式
- Collection集合的格式:[元素1,元素2,元素3,…]
- Map集合的完整格式:{key1=value1,key2=value2,key3=value3,…}
Map集合的使用场景:购物车系统
分析
- 购物车提供的商品和购买数量在后台需要容器存储
- 每个商品对象都一一对应一个购买数量
- 把每个商品对象看成是Map集合的键(key),购买数量看成是Map集合值(value)
{商品1=2,商品2=3,商品3=2,商品4=5,…}
Map集合体系结构
使用最多的Map集合是 HashMap
Map集合体系特点
1.Map集合的特点都是由键决定的
2.Map集合的键是 无序 不重复 无索引的,值可以不做要求
3.Map集合后面重复的键对应的值会覆盖前面重复键的值
4.Map集合的键值对都可以为null
Map集合实现类特点
HashMap:元素按照键 无序 不重复 无索引 值不做要求
Map<String,Integer> map = new HashMap<>(); //键 无序 不重复 无索引 值不做要求
map.put("java",10);
map.put("特步",4);
map.put("361",2);
map.put("匹克",1);
map.put(null,null); //集合里面的键值对可以都是null
map.put("匹克",19);
// {null=null, 特步=4, java=10, 匹克=19, 361=2}
System.out.println(map);
LinkedHashMap:元素按照键 有序 不重复 无索引 值不做要求
Map<String,Integer> map = new LinkedHashMap<>(); //键 有序 不重复 无索引 值不做要求
map.put("java",10);
map.put("特步",4);
map.put("361",2);
map.put("匹克",1);
map.put(null,null);
map.put("匹克",19);
// {java=10, 特步=4, 361=2, 匹克=19, null=null}
System.out.println(map);
TreeMap:元素按照键 排序 不重复 无索引 值不做要求
Map集合常用API
方法名称 | 说明 |
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<String,Integer> map = new HashMap<>();
map.put("小米",2999);
map.put("华为",4999);
map.put("荣耀",3999);
map.put("oppo",3699);
map.put("一加",3899);
map.put("苹果",7999);
// {苹果=7999, oppo=3699, 华为=4999, 一加=3899, 荣耀=3999, 小米=2999}
System.out.println(map);
//2.清空集合
/*map.clear();
System.out.println(map);*/
//3.判断集合是否为空 为空返回true 反之false
System.out.println(map.isEmpty());
//4.根据键获取对应的值 : public V get(Object key)
System.out.println(map.get("小米")); // 2999
//5.根据键删除整个元素 (删除键会返回键的值)
Integer i = map.remove("苹果");
System.out.println(i); // 7999
//6.判断是否包含某个键
System.out.println(map.containsKey("华为")); //true
//7.判断是否包含某个值
System.out.println(map.containsValue(100)); //true
// [oppo, 华为, 一加, 荣耀, 小米]
//8.获取全部键的集合 public Set<K> keySet()
Set<String> strings = map.keySet();
System.out.println(strings);
//9.获取全部值的集合 Collectio<V> values();
Collection<Integer> values = map.values();
System.out.println(values);
//10.集合的大小
System.out.println(map.size()); // 5