5-1 Collection集合
01 84、集合进阶概述



02 85、Collection集合:常用API



其中第七条用Object的好处是可以接收一切类型的数组。如果你对类型有要求也可以自由切换。

将C1的数据导入c2中。
输出c1c2,会发现c2中的数据依旧存在。c1中包含了c1和c2的所有数据。
总结:

03 86、Collection集合的遍历方式一:迭代器


代码实现:

上图是我们手工遍历的结果。用it.next依次向后一个一个取元素。超出集合范围后会报错。

依旧先从集合中获取迭代器对象,并将迭代器对象默认放在集合的第一位。

上图是我们使用while循环,让it调用hasNext方法作为判断条件,
hasNext会判断当前索引处有无元素,且将迭代器向后移动一索引。
在集合范围内,用ele来存放对应索引的元素并打印输出。
总结:

Iterator<String> it = c.iterator();
while(it.hasNext()){
String 变量名 = it.next();
System.out.println(变量名);
}
04 87、Collection集合的遍历方式二:增强for循环
格式:

增强for循环遍历集合的本质就是迭代器遍历集合。
代码演示:

上图为增强for遍历集合和增强for遍历数组的示例。
增强for快捷键:直接右键选中需要遍历的对象按“ .for ”
05 88、Collection集合的遍历方式三:Lambda

代码演示:

首先我们要知道forEach是lambda中的一个子类中的方法,这个子类是一个函数式接口。所以我们在调用foreach的时候:
第一反应是:接口无法创建对象,所以使用匿名内部类重写抽象方法创建对象。
第二反应是:我们可以使用lambda表达式对这个匿名内部类进行简化
两步简化:去掉方法名前内容并添加“->”,再去掉大括号,变量类型。
第三步反应是:发现前后变量名相同,可以采用方法引用的方式继续化简,去掉前后变量名和“->”,在方法名前添加“ ::”
06 89、遍历集合的案例


简简单单思路相同,区别在于增强for的使用。
需要注意的知识点:

5-2 List系列集合
01 90、List系列集合:特点、特有方法


02 91、List系列集合:遍历方式

有索引的才可以用for循环去遍历
代码实现如下:

03 92、List系列集合:ArrayList集合的底层原理



总结:

04 93、List系列集合:LinkedList集合的底层原理




总结:

05 94、List系列集合:LinkedList集合的应用场景:做队列、栈

代码模拟入队出队:

所用方法:addLast();removeFirst();


代码模拟入栈出栈:

所用方法:addFirst();removeLast();
实际上,我们有压栈出栈的api可以调用,直接用push和pop

5-3 Set系列集合
01 95、Set系列集合:整体特点


02 96、Set系列集合:HashSet集合的底层原理1

当创建对象数量超过int的范围后,哈希值可能出现相同


03 97、Set系列集合:HashSet集合的底层原理2


通过加载因子扩容,一旦数组中的内容已经占据了数组长度x加载因子的值,那么就会执行数组扩容。将大小扩大为原数组的两倍。再一个一个将数组内容拷贝到新数组。
但问题又出现了,如果链表太长了怎么办呢?
jdk8之后引入了红黑树的概念。把比元素大的放右边,比元素小的放左边,相当于查找数据的时候进行了二分查找。性能倍增。
如何判断元素的大小值呢?实际上这里判断的是元素的哈希值。用哈希值的大小来进行判断。

04 98、Set系列集合:HashSet集合去重复机制



重写hashCode让他们哈希值相同,这样可以准确找到具体位置。
其次重写equals方法,比较他们的内容
这样哈希值相同内容也相同的对象就可以被看作是重复了。

05 99、Set系列集合:LinkedHashSet集合


06 100、Set系列集合:TreeSet集合


实现原理,红黑树排序:将需要输入的元素的哈希值依次从头节点向下比较,直到找到自己的位置存入或者遇到相同的不存入。红黑树会这样把元素从左到右按照从小到大的顺序排列。


代码实现如下:
法1:

法2:

5-4 集合补充知识、综合案例
01 101、Collection系列集合的小结


02 102、补充知识:集合的并发修改异常问题
、
普通for循环遍历可以通过i--的方式来解决
迭代器遍历可以通过调用迭代器自身的remove方法来解决这个问题。
for循环和lambda表达式就无法解决这样的问题了。


03 103、前置知识:可变参数

代码演示

输出结果

注意事项:

总结:

04 104、集合的工具类:Collecitons


5-6 Map、JDK8新特性
03 116、补充知识:集合的嵌套

如上图,map中依然是一个集合,这就是集合的嵌套。

存入和输出
04 117、JDK8新特性:Stream流入门

相比经典api来说,Stream流强大太多了。

05 118、JDK8新特性:Stream流的创建

获取集合的Stream流方式:

set集合和list集合可以直接调用stream方法来创建stream流
map只能先想办法转为set再调用Stream流。可以用map.key获取key值。map.value获取value值,
也可以用map.entry将数据以entry类型封装给一个集合,再用这个集合直接调用Stream流。
06 119、JDK8新特性:Stream流的中间方法


08 121、JDK8新特性:Stream流的终结方法






第五章 集合框架&spm=1001.2101.3001.5002&articleId=147249796&d=1&t=3&u=4207a8711c0f4584b282a419da8d3d0d)
906

被折叠的 条评论
为什么被折叠?



