Map双列集合
Collection 集合:向集合中存储元素采用一个个元素的方式存储。
Map 集合:集合中每一个元素由键与值两部分组成,通过键可以找对对应的值。
注意: Map 中的集合不能包含重复的键,值可以重复;每个键只能对应一个值
HashMap:
用哈希表结构存储数据,无序存储。如果要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
LinkedHashMap:
LinkedHashMap是HashMap的子类,用哈希表结构+链表结构存储数据。有序存储;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的 hashCode()方法、equals()方法。
HashMap
Map<String, Integer> map = new HashMap<>();
//把指定的键值对添加到Map集合中
map.put("张三", 20);
map.put("李四", 25);
map.put("王五", 30);
System.out.println(map);// {李四=25, 张三=20, 王五=30}
//把指定的键所对应的键值对元素在Map集合中删除,返回被删除元素的值
Integer i1 = map.remove("王五");
System.out.println("i1:" + i1);// i1:30
//根据指定的键,在Map集合中获取对应的值
Integer i2 = map.get("张三");
System.out.println("i2:" + i2);// i2:20
//Map集合是否含有指定的键
boolean b1 = map.containsKey("张三");// b1:true
System.out.println("b1:" + b1);
// 获取Map集合中所有的键,存储到Set集合中
Set<String> set = map.keySet();
for (String key : set) {
Integer value = map.get(key);
System.out.println(key + "=" + value);
}
//李四=25
//张三=20
//获取到Map集合中所有的键值对对象的集合(Set集合)
Set<Entry<String, Integer>> entrySet = map.entrySet();
for (Map.Entry<String, Integer> entry : entrySet) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + "=" + value);
}
//李四=25
//张三=20
LinkedHashMap
//允许存储重复的键后面的值会覆盖前面的值,无序存储
HashMap<String,String> map = new HashMap<>();
map.put("a", "a");
map.put("c", "c");
map.put("b", "b");
map.put("a", "d");
System.out.println(map);//{a=d, b=b, c=c}
//不允许存储重复的键编译不报错运行期报错,有序存储
LinkedHashMap<String,String> linked = new LinkedHashMap<>();
linked.put("a", "a");
linked.put("c", "c");
linked.put("b", "b");
linked.put("d", "d");
System.out.println(linked);//{a=a, c=c, b=b, d=d}