一.定义 1.Map集合是一个双列集合,以键值对的形式存在 2.将键和值捆绑到一起存放(Map.Entry) 3.一个映射不能包含重复的键 4.如果出现相同的键,会用新的值覆盖老的值
二.Map接口和Collection接口的不同
1.Map是双列的,Collection是单列的 2.Map集合的数据结构针对键有效, 跟值无关, 3.Collection 集合的数据结构是针对元素有效 三.常用方法
添加方法: V put(K key , V value): 添加元素 如果键是第一次存储, 直接存储元素,返回null 如果键不是第一个存在, 就用值把以前的值替换掉,返回以前的值
删除方法: void clear() : 移除所有的键值对元素 V remove(Object key) : 根据键删除键值对元素, 并把值返回
判断方法: boolean containsKey(Object key) : 判断集合是否包含指定的键 boolean containsValue(Object value): 判断集合是否包含指定的值 boolean isEmpty: 判断集合是否为空
获取方法: Set<Map.Entry<K,V>> entrySet() : 获取所有的键值对 V get(Object key) : 根据键获取值 Set keySet() : 获取集合中所有键的集合 Collection values() : 获取集合中所有值的集合 int size() : 返回集合中键值对的个数 四.举例
public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); //添加方法 map.put("张三", 18); map.put("李四", 24); map.put("王五", 26); map.put("赵六", 19); map.put("田七", 18); System.out.println(map); //判断键是否存在 boolean f = map.containsKey("张三"); System.out.println(f); //判断值是否存在 flg = map.containsValue(18); System.out.println(f); //判断集合是否为空 flg = map.isEmpty(); System.out.println(f); //根据键获取值 Integer i = map.get("田七"); System.out.println(i); //获取集合中元素的个数 int size = map.size(); System.out.println(size); //获取集合中所有的键值对 Set<Map.Entry<String, Integer>> entry = map.entrySet(); System.out.println(entry ); //获取集合中所有键 Set<String> key = map.keySet(); System.out.println(key); //获取集合中所有的值 Collection<Integer> value = map.values(); System.out.println(value); }五.Map集合的遍历 获取所有键的集合的遍历
public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("张三", 18); map.put("李四", 24); map.put("王五", 26); map.put("赵六", 19); map.put("田七", 18); Set<String> keyset = map.keySet(); Iterator<String> it = keyset.iterator(); while (it.hasNext()) { String key = it.next(); Integer value = map.get(key); System.out.println("键:"+key+" 值:"+value); } }获取所有的值的遍历
public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("张三", 18); map.put("李四", 24); map.put("王五", 26); map.put("赵六", 19); map.put("田七", 18); Collection<Integer> values = map.values(); Iterator<Integer> it = values.iterator(); while (it.hasNext()) { Integer value = it.next(); System.out.println("值:"+value); } }获取所有键值对的遍历
public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("张三", 18); map.put("李四", 24); map.put("王五", 26); map.put("赵六", 19); map.put("田七", 18); Set<Entry<String, Integer>> entrySet = map.entrySet(); Iterator<Entry<String, Integer>> it = entrySet.iterator(); while (it.hasNext()) { Map.Entry<String,Integer> entry = it.next(); String key = entry.getKey(); Integer value = entry.getValue(); System.out.println("键:"+key+" 值:"+value); } }六. HashMap
1.定义 1).底层使用的是数组 2).HashMap就是通过我们存入的key获取到一个hash值, 经过计算之后, 获取到一个数组角标, 然后将key和value封装到一个Entry里面, 然后存入数组 3).当数组容量不够的时候, 会自动扩容一倍
2.构造方法 1)HashMap(): 构造一个具有默认初始容量(16) 和默认加载因子(0.75)的空HashMap 2)HashMap(int initialCapacity): 构造一个带指定初始容量和默认加载因子 (0.75) 的空HashMap 3)HashMap(int initialCapacity, float loadFactor): 构造一个带指定初始容量和加载因子的空HashMap 4)HashMap(Map<? extends K, ?extends V> m): 构造一个映射关系与制定Map相同的新HashMap
3.常用方法 1)put(K key, V value) : 在此映射中关联指定值与指定键 2)putAll(Map<? extends K, ?extends V> m) : 将另外一个map集合复制到此集合中
