1. set集合
1.1 hashSet特点:无序+无索引+无重复,图解见2019-6-12/img/1
1.2 哈希值:hashcode()返回的是数据的10进制逻辑地址,是由操作系统主导的。图解见2019-6-12/img/2
1.3 哈希表结构:查询极快。图解见2019-6-12/img/3和4
1.4 理解hash不重复的原因是:重写了hashcode和equals方法。因此用hash存储自定义类型时,一定要注意重写这两个方法才能保证不重复。图解见2019-6-12/img/5和6
1.5 linkedHashSet(加了一个链表):有序+无索引+无重复。图解见2019-6-12/img/7
1.6 可变参数(底层还是数组)的使用和注意事项:图解见2019-6-12/img/8和9
2. Collections工具类
2.1 addAll(collection,e1,e2....),shuffle(list)【这里如果是set的话可以使用list的addAll方法转为list】。图解见2019-6-12/img/10
2.2 sort(list)默认排序方法(保证list的元素实现了comparable接口)图解见2019-6-12/img/11和12,sort(list,comparator实现类)。图解见2019-6-12/img/13和14
3. Map
3.1 map特点:图解见2019-6-12/img/15
3.2 hashMap/linkedHashMap特点:图解见2019-6-12/img/16
3.3 map常用方法:图解见2019-6-12/img/17
①put(k,v),如果k不存在,返回null,存在就换成现在的键值对,并返回被替换的value。
②get(k)返回value。
③remove(k)返回null或者value
④containsKey(k)返回布尔
3.4 map遍历方法1:键找值,通过keySet()获取键,进而得到value。图解见2019-6-12/img/18
3.5 Entry对象简介:图解见2019-6-12/img/19
3.6 map遍历方法2:entrySet()。图解见2019-6-12/img/20和21
3.7 map存储自定义类型:因为key是唯一的,不重复,所以需要重写hashcode和equals。图解见2019-6-12/img/22和23
3.8 linkedHashMap:有序。图解见2019-6-12/img/24
3.9 hashTable:过时,不能存储null值。图解见2019-6-12/img/25
3.10 案例:统计字符串各个字符的个数。图解见2019-6-12/img/26
3.11 JDK109新特性:SET,LIST,MAP快速添加元素方法。例如:List<Integer> list = List.Of(10,20)。图解见2019-6-12/img/27
4. debug调试
图解见2019-6-12/img/28
5. 综合案例——斗地主(得到有序的牌)
图解见2019-6-12/img/29
6. 异常
6. 1 throwable:error+exception。图解见2019-6-12/img/30
6.2 异常产生的原理:图解见2019-6-12/img/31
6.3 throw抛出异常
①runtime类型异常可以不处理(JVM来处理)
②编译异常必须声明或者捕获
图解见2019-6-12/img/32和33和34
6.4 Objects.requireNonNull(obj)可以识别null异常.图解见2019-6-12/img/35
6.5 解决编译异常的第一种方法——throws声明。图解见2019-6-12/img/36和37
6.6 解决编译异常的第二种方法——try/catch。(不用JVM中断处理,我们自己解决)。图解见2019-6-12/img/38和39
6.7 catch处理异常的三种方法:getMessage,toString,printStackTrace。图解见2019-6-12/img/40
6.8 finally收尾:必须执行的代码。最好不要带return,否则方法一定从这里返回。图解见2019-6-12/img/41和45
6.9 多异常处理方式:一一处理,一捕获多处理(子类处理在最上面),一捕获一处理(使用父类)。图解见2019-6-12/img/42和43和44
6.10 父类子类异常的注意事项:图解见2019-6-12/img/46
6.11 自定义异常类。图解见2019-6-12/47