集合
1. java中集合架构图
2. ArrayList类详解
//ArrayList常用方法
1. 向列表中添加元素
add(E e)
Collections.addAll(list, e1, e2, ......)
2. 清空列表
clear()
3. 判断列表中是否有元素
contains(object o)
4. 获取某个下标处的元素
get(int index)
5. 获取某个元素在列表中的下标
indexOf(Object o)
6. 判断列表是否为空
isEmpty()
7. 移除某个元素
remove(int index/Object o)
8. 获取子列表
subList(int fromIndex, int toIndex)
ArrayList源码学习
ArrayList底层是用数组实现的,因此增删速度比较慢,查询速度比较快;所分配元素的地址空间是连续的。
3. LinkedList类详解
LinkedList源码学习
LinkedList底层是用双向链表实现的,因此增删速度比较快,查询速度比较慢;所分配元素的地址空间是不连续的。
4. HashSet类详解
HashSet底层是用哈希表+单链表实现的,当新加入一个元素的时候,它的处理步骤如下:
- 根据元素的hashCode计算值,根据值定位到哈希表中指定的位置,如果此位置为空,就存入该元素;否则,继续判断
- 执行equals方法,如果判断结果为True,认为元素重复;反之,形成链表
因此,我们可以自定义hashCode和equals方法来实现我们自己的判断方式。
5. TreeSet类详解
TreeSet底层是用红黑树实现的,能对集合元素进行自动排序。
注意:
如果集合元素是引用,那么TreeSet在排序的时候不知道排序规则,因此,必须事先定义排序规则,在这里有两种方式:1)引用类型实现Comparable接口,重写compareTo方法【返回负数,0和正数】
2) TreeSet在创建的时候指定Comparator,重写compare方法