集合:集合是一种容器,用来装数据的,类似于数组,但集合的大小可变,开发中也经常使用.
集合体系结构
Collection集合
Collection是所有单列集合的鼻祖,实现类的大部分方法都继承了它
Collection集合特点:
方法
遍历方式
迭代器
增强型for循环
lambda表达式
List系列集合
List集合的方法:
List的遍历方式
ArrayList集合底层原理
-
基于数组实现
-
查询速度快(是根据索引查询数据快):根据地址值和索引定位
-
删除效率低
-
添加效率低:数据后移或扩容
LinkedList集合底层原理
LinkedList应用场景之一
用来设计队列--先进先出 对首尾进行频繁操作
用来设计栈--先进后出 后进先出
Set系列集合
前引--什么是哈希值
HashSet集合的底层原理
JDK8之前:
JDK8之后:
先了解一下红黑树--一种平衡二叉树
现在的HashSet是可重复的 因为不同的对象的哈希值大概率是不一样的 如果想要让集合不可重复,重写hashCode()方法和equals()方法 赋予相同的hashcode 虽然也有数组但是插入的顺序随机 设置无索引
LinkedHashSet底层原理
TreeSet底层原理
代码演示:
红黑树是什么?
总结:(不同单列集合适用的场景)
集合并发异常问题:
解决的方法:
for循环和迭代器遍历都有相对的解决方法,但是增强型for循环和foreach(lambda)循环而无法解决
因为增强型for循环就是一个简易的迭代器循环 但是不能使用迭代器的remove方法 而foreach的底层就是增强型for循环,所以这两种方法不能解决
Collection其它相关知识
可变参数
Collections 工具类
对于第四点排序的两种方法: