HashMap底层是 数组+链表 即散列表 或 邻接链表
1.8版本后 数组+链表+红黑树
hashCode方法中
不同的对象 可能 产生相同的hashCode码
不同的hashCode() 一定对应 不同的对象
1.java.util包
2.创建对象
无参数构造方法
带容量的构造方法
带容量和负载因子的构造方法
带(Map<? extends K, ? extends V> m)参数构造方法
3.常用方法
增删改查
增 put(key,value)
添加 存放一组映射关系 key-value
1.key存储的顺序与取得顺序不同
2.不同的key可以存储相同的value
3.key若有相同的 则将原有的value覆盖(跟set刚好相反)
删 E = remove(key); 或 remove(key,value);
删除
改 replace(key,newValue); 或 replace(key,oldValue,newValue);
也可以用put(key.value1) 与 put(key,value2)来改
查 E = get(key);
其他方法
clear();
//清空集合
containsKey(key);
//集合中是否包含key键
containsValue(value);
//集合中是否包含value
isEmpty();
//集合是否为空
putAll(map);
//将另一个集合的元素全部添加进来
getOrDefault(key,defaultValue);
//若key存在就返回value 若不存在就返回defaultValue
putIfAbsent(key,value);
//key若不存在就存入 若存在就不存入
遍历map
方式一:需要获取到所有的key 遍历key 通过key获取value
即 Set
如
HashMap<String,String> map = new HashMap<>();map.put("小兰","eee");map.put("小明","bbb");map.put("小程","aaa");map.put("小红","ccc");map.put("小兰","ccc");map.put("小黑","ddd");System.out.println(map);//获取全部keySet<String> keys = map.keySet();//迭代器遍历keysIterator<String> it = keys.iterator();while(it.hasNext()){String key = it.next();String value = map.get(key);System.out.println(map.get(key));}}
方式二:Set
Map.Entry即entry对象
HashMap<String,String> map = new HashMap<>();map.put("小兰","eee");map.put("小明","bbb");map.put("小程","aaa");map.put("小红","ccc");map.put("小兰","ccc");map.put("小黑","ddd");Set<Map.Entry<String,String>> entrySet = map.entrySet();//获取全部entry对象Iterator<Map.Entry<String,String>> it = entrySet.iterator();while(it.hasNext()){Map.Entry<String,String> entry = it.next();//接收对象String value = entry.getValue();String key = entry.getKey();System.out.println(key+"---"+value);}

