HashMap
HashMap是Map接口的实现类
- key唯一,value可重复 key如果重复,会发生value覆盖
- 无序
- 无索引
- 线程不安全
- 可以存null健null值
数据结构是哈希表
方法与LinkedHashMap一样
V put(K key,V value) 添加元素
V remove(Object key) 根据key删除键值对,返回value
V get(Object key) 根据key获取value
boolean containsKey(Object key) 判断集合中是否包含指定的key
两个用于遍历Map的方法
Set<K> keySet() 将Map集合中的key获取出来,转存在Set集合中
Set<Map.entry<K,V>> entrySet() 获取Map集合中的键值对转存到Set集合中
import java.util.HashMap;public class DemoHashMap {public static void main(String[] args) {HashMap<String, String> map = new HashMap<>();//V put(K key,V value) 添加元素map.put("张三","淑芬");map.put("李四","深田");//key重复,value覆盖map.put("张三","悠亚");System.out.println(map);//V remove(Object key) 根据key删除键值对,返回valueString value01 = map.remove("李四");System.out.println(map);System.out.println(value01);//V get(Object key) 根据key获取valueString g = map.get("张三");System.out.println(map);//boolean containsKey(Object key) 判断集合中是否包含指定的keySystem.out.println(map.containsKey("李四"));}
}
LinkedHashMap
是HashMap的子类
- key唯一,value可重复 key如果重复,会发生value覆盖
- 有序(与HashMap不同点)
- 无索引
- 线程不安全
- 可以存null健null值
数据结构:哈希表+双向链表
用法与HashMap相同
HashMap与LinkedHashMap的遍历都需要先转换为set集合
方法一,先获取key,在根据key获取value
Set<K> keySet() 将Map集合中的key获取出来,转存在Set集合中
public static void main(String[] args) {HashMap<String, String> map = new HashMap<>();map.put("张三","淑芬");map.put("李四","深田");map.put("王五","筱田");map.put("赵六","美谷");map.put("孙七","朱利");map.put("朱八","河北");//获取key,保存到set集合中,keySet方法Set<String> set = map.keySet();for (String s : set) {System.out.println(s+".."+map.get(s));}}
方法2同时获取key与value
Set<Map.entry<K,V>> entrySet() 获取Map集合中的键值对转存到Set集合中
并不是直接获取key与value ,而是利用entrySet方法获取Map接口中的一个静态接口Map.Entry,
而Map.Entry中有获取key与value的方法getKey(),getValue():
public static void main(String[] args) {HashMap<String, String> map = new HashMap<>();map.put("张三","淑芬");map.put("李四","深田");map.put("王五","筱田");map.put("赵六","美谷");map.put("孙七","朱利");map.put("朱八","河北");//获取静态接口Map.Entry,entrySet方法Set<Map.Entry<String,String>> set = map.entrySet();for (Map.Entry<String, String> s : set) {//静态接口中的getKey()与getValue()获取键值对String key = s.getKey();String value = s.getValue();System.out.println(key+".."+value);}}
元素为自定义对象去重复
与set去重复方法相同,在定义类中重写hashcode()与equals()