|---- List : 存放的数据是有序的且可重复的,以下是实现类:
-
|---- ArrayList: List的主要实现类, 底层是数组实现的,查找快,增删慢。线程不安全的,效率高一些
-
|---- Vector :底层是数组实现的,线程安全,效率比ArrayList低一些
-
|---- LinkedList :底层是双向链表,删除和插入比较快,查找慢。
/*
// list集合常用的方法//在当前集合的index位置添加一个元素ele //如果元素是一个集合,则将这个集合作为一个元素添加进去 void add(int index, Object ele) //在当前集合中index位置上添加eles中的所有元素 boolean addAll(int index, Collection eles) //获取当前集合中index位置上的元素 Object get(int index) //obj在当前集合中索引的位置,如果找不到返回-1 (从前向后找) int indexOf(Object obj) //obj在当前集合中索引的位置,如果找不到返回-1 (从后向前找) int lastIndexOf(Object obj) //从当前集合中删除掉index位置上的元素 ,并返回该元素 Object remove(int index) //修改当前集合中index位置上的元素,并换成ele Object set(int index, Object ele) //将当前集合中fromIndex到toIndex位置上的元素取出放到一个新的集合中 (包头不包尾) List subList(int fromIndex, int toIndex)
*/
ArrayList
/*
* ArrayList(List主要实现类) :
*
* 构造器:
* new ArrayList() : 底层创建一个长度为10的数组
* new ArrayList(int init) : 底层创建一个长度为init的数组
*
* ArrayList的底层实现?
* ArrayList空参的构造器底层会创建一个长度为10的数组,当我们向该集合中添加对象到第11个时,
* 集合会进行扩容,扩容为原来数组长度的1.5倍。再将原来数组中的数据复制到新的数组中。
* 我们可以根据要添加元素的数量去选择创建对象的构造器。如果知道元素的数量建议使用 new ArrayList(int init).
*/
LinkedList
/*
* void addFirst(Object obj) //向集合的头部添加一个元素obj
void addLast(Object obj) //向集合的尾部添加一个元素obj
Object getFirst() //获取集合中的第一个元素
Object getLast()//获取集合中的最后一个元素
Object removeFirst()//删除集合中的第一个元素并返回
Object removeLast()//删除集合中的最后一个元素并返回
*/
[面试题]
/* ArrayList,Vector,LinkedList的区别是什么?
ArrayList : 底层是数组实现的,查找快,增删慢。线程不安全的,效率高一些
Vector : 底层是数组实现的,线程安全,效率比ArrayList低一些
LinkedList : 底层是双向链表,删除和插入比较快,查找慢。
*/