1. Map集合:1>概述:K键是唯一的V值可以重复;K与V是一一对应的;//java.util.Map<K,V>
2>常用子类:<1>HashMap:底层是哈希表,查询速度快;无需集合,存储原序和取出元素的顺序可能不一致;
//java.util.HashMap<K,V> implements Map<K,V>
<2>LinkedMap:底层是哈希表+链表(保证了迭代顺序);是一个有序集合,存储元素和取出元素顺序一致;
//java.util.LinkedHashMap<K,V> extends HashMap<K,V>
3>常用方法:
4>遍历键找值方式:使用Map集合中的方法keySet(),把集合中索引dey取出,存储到一个set集合中;
// Set<String> set = map.ketSet();
遍历set集合,获取map集合中的每一个key;
/* Iterator<String> it = set.iterator();
while(it.hasNext()){
String key = it.next();
Integer value = map.get(key);
System.out.println(key + "=" + value);}. */
通过map集合中的方法get(key),通过key找到value;
/* for(String key : set){
Integer value = map.get(key);
System.out.println(key + "=" + value); } */
5>Entry键值对对象:Map.Entry<K,V>;
在Map接口中有一个内部接口Entry,当Map结合创建时,可以用来记录键和值的对应关系;
6>遍历键值对方式:<1>使用Map集合中的方法entrySet(),把Map集合中多个Entry对象取出来,存到Set集合中;
<2>遍历Set集合,获取每个Entry对象;
<3>使用Entry对象中的方法getKey()和getValue()获取键和值;
2.HashMap存储自定义类型键:保证Key唯一,需要重写hashCode和Equals方法,保证key唯一;
3.LinkedHashMap集合:HashMap无重复,无序;LinkedHashMap无重复,有序;
4.Hashtable集合:底层是哈希表,不能存储null对象,单线程(线程安全),速度慢;key和value都不能有null;
5.例题:
6.of方法:1>静态方法,可以一次给集合添加多个元素;
2>只适用于List,Set,Map接口,不适用于实现类;
3>of方法的返回值是一个不能改变的集合,不能再使用add,put等方法,Set和Map集合调用的时候不能有重复元素;
//static <E> list = List.of("a","b","a","c");
7.Debug追踪: 逐行执行代码;红点->Debug->逐行执行检查bug(for loop可以看到循环过程,还可以进入跳出方法);
8.有序排列的斗地主: