ArrayList,Set
1. ArrayList 重点
调用无参数构造方法,创建ArrayList对象,底层保存数据的Object类型数组容量是多少???
初始化容量为10 ,因为在ArrayList中,有一个私有的静态修饰final成员变量,
private static final DEFAULT_CAPACITY = 10;
这里使用DEFAULT_CAPACITY 作为Object类型数组初始化容量!!!
ArrayList的最大特征:
增删慢
查找快
增加慢:
1. 涉及到扩容数组时!!!这里存在数据拷贝过程,比较浪费时间
2. 在指定位置插入数据时,会导致从插入位置开始之后的数据,整体右移
删除慢:
1. 删除指定位置下标的元素,需要从删除位置开始,之后元素整体左移
查找快: [底层原理,难]
[外链图片转存失败(img-7n0xMq9T-1569487430952)(.\img\内存地址分析.png)]
ArrayList适应范围:
对于数据操作查询情况非常多,但是增删情况很少的,可以操作ArrayList
例如:
图书馆,人力管理系统
2. LinkedList
链表!!!
特征: 增删块,查找慢
特殊方法:
boolean addFirst(E e);
boolean addLast(E e); ==> boolean add(E e);
E getFirst();
E getLast();
removeFirst();
removeLast();
队列:
排队,先进先出
addLast(); getFirst(); removeFirst();
堆栈:
弹夹,先进后出
addLast(); getLast(); removeLast();
3. Object
Object是Java中的基类!!!
toString() 没用
boolean equals(Object obj); 比较两个对象是否相同
int hashCode(); 获取当前对象的唯一标识号
hashCode没有被重写的情况下,是当前对象在内存空间首地址的十进制展示方式!!!
Java规定如果两个对象equals返回true,那么这两个对象的hashCode码必须一致。
4.Set接口
也是一个集合接口,是Collection接口的子接口!!!
特征:
无序,不可重复
无序: 添加顺序和保存顺序不一致
不可重复,不能实现相同的对象
Set不存在特殊方法。使用Collection方法就OK的!
--| HashSet 底层是一个哈希表,存储效率极高!!!
--| TreeSet 底层是一个树形结构,要求所有保存的数据表现存在比较规则!!!
率极高!!!
–| TreeSet 底层是一个树形结构,要求所有保存的数据表现存在比较规则!!!