Collection的子接口:
list
list接口:存储有序、可重复的数据 “动态数组“,替换原有的数组
ArrayList、LinkedList 、Vector三者的异同?
ArrayList:作为List接口的主要实现类,现程不安全的,效率高,底层使用object[]数组存储
JDK1.7
建议在实际应用中,使用带参的构造,ArrayList list =new ArrayList(int size);
类似于饿汉式
JDK1.8
相比于1.7,节省内存,刚开始并不创建,调用ADD方法的时候才调用。
LinkedList:底层使用的是双向链表存储,对于频繁插入和删除操作,使用此效率比ArrayList高
Vector:作为List接口的古老实现类,现程安全的,效率底,底层使用object[]数组存储
Vector中源码分析:
jdk7和jdk8中通过Vector()构造器创建对象,底层都创建了长度为10的数组,在扩容方面,默认扩容为原来数组长度的2倍。
比较常用的是ArrayList和LinkedList
List中的常用方法:增删改查,长度,遍历
增:void add();
删:remove(int index)/remove(object obj)
改:set(int index,object ele)
查:get(int index)
插:add(int index,Object ele)
长度:size();
遍历:Iterator迭代器
增强型for循环
Collection如果存储的是自定义的数据类型,需要重写equals()方法。
Lists:equals()方法;
Set:(Hashset、LinkedHashSet()为例,重写equals()、HashCode()
TreeSet();