集合
List接口特点:
有序集合 -- 元素存储和取出的顺序 -- 元素怎么存储就怎么取出来
有索引的集合
允许重复的集合
ArrayList集合自身特性:
底层数据结构是数组,可变数组(复制数组实现可变)
可以存null
线程不安全集合,不同步,运行速度快
元素,查询速度快(索引导致),增删慢(复制数组,所以慢)
默认长度是10,不够增长50%(原来长度的50%)
Vector集合自身特性:
底层数据结构是数组,可变数组
线程安全,同步的,运行速度慢
查询快,增删慢
默认长度是10个,增长率是100%
LinkedList自身特性:
底层数据结构,链表结构:集合容器中,对象之间的地址记录方式存储
查询慢(按照地址一个一个去找),增删快(记录地址即可,记住前一个地址)
线程不安去集合,运行快
Set接口特点:
不允许重复值
没有索引
无序
HashSet自身特性:
数据结构是哈希表(数组+链表)
存取速度快(数组查询快,链表增删快)
线程不安全集合,运行速度快
LinkedHashSet自身特性:
存储取出顺序一致的(有序)
链表保证有序
哈希表保证唯一
线程不安全,运行快
TreeSet自身特性:
底层数据结构红黑树(自然平衡算法二叉树)
对存储对象进行排序
线程不安全,运行速度快
Comparable 接口:对实现他的所有类的对象,进行强制排序,顺序为对象的自然顺序(compareTo排序)
Comparator 接口:强行对某个对象排序(compare)
哈希值:通过方法hashCode获取,JVM对于任意的一个对象,都赋予一个不同的十进制数,这就是哈希值
如果两个对象哈希值一样,equals一代返回true吗?
不一定
如果两个对象,equals方法返回true,拥有相同的哈希值吗
肯定
TreeSet存储自定义对象
* 1. TreeSet集合存储对象的时候,不考虑 hashCode equals(HashSet)
* 2. TreeSet集合依据对象的自然顺序进行排序
* 要求存储到TreeSet集合中的对象,具有自然顺序
* 类,实现Comparable接口,重写compareTo
*
* 3. TreeSet集合自己具备比较性
* 自定义比较器对象,实现 uitl.Comparator,重写compare
* 接口实现类对象,传递给TreeSet集合
* 一旦有了比较器,TreeSet集合不考虑对象自然顺序
*
* 8种基本数据类型包装类,+ String
* 重写 hashCode equals 存储到哈希表
* 实现了Comparable接口,重写compareTo方法,红黑树 |
|