Collection接口
List集合(有序集合,具有索引取值,可重复集合。【元素存储和取是相同】)
数据结构
堆栈:先进后出。(弹夹添加子弹)
队列:先进先出。(过安检)
数组:查询速度快,可以通过索引查询,增删性能慢 (添加或者删除都得先建一个数组)
链表:查找慢,增删速度快(排队)
ArrayList:
1.ArrayList是通过数组实现,一旦实例化ArrayList无参构造函数默认长度是10
2.add方法添加元素时如果超出10个元素,ArrayList底层会新生一个数字长度,数字的长度是原来的1.5倍加1,然后吧原来的的数组内容添加到新的数字中,新数组无法容纳的时候会重复改过程扩容。扩容数字调用Arrays.copyof(objArr,objArr.length+1);
LinkenList
LinkeList是双向链表组成的。且头结点中不存放数据
ArrayList:
底层数据结构是数组,查询快,增删慢
线程不安全,效率高
LinkedList:
底层数据结构是链表,查询慢,增删快
线程不安全,效率高
set集合,不可重复,没有索引(取只能用迭代器取值)
Set接口实现类HashMap
自身特点:(哈希值就是new出来值JVM就已经赋予十进制的数,继承父类可修改哈希值)
底层数据结构哈希表,单向链表(只能从上往下记录数据)
线程不安全集合,运行速度块
允许存储null值,null键
无序集合,存储和取出的顺序不同
为保证作为键对象的唯一性,键对象必须实现hashCode,equals方法。
Set的实现类HashSet的子类LinkedHashSet
LinkedHashSet
底层是哈希表,是双向链(双向记录数据)
有序,存储和取出是有序的
不同步 线程不安去,运行速度快
泛型格式:
<数据类型>
泛型可以说使用在类、接口、方法、变量上
泛型好处
1.提供了程序的安全
2、将运行期遇到的问题转移到编译器
3、省去了类型强转的麻烦