List集合
最常见的三种实现类:ArrayList、LinkedList、Vector
常用方法:
- boolean add(E e):将指定元素追加到此列表的末尾。
- void add(int index, E element):将指定元素插入此列表中的指定位置。
- boolean addAll(Collection<? extends E> c):按照指定集合的迭代器返回的顺序,将指定集合中的所有元素附加到此列表的末尾。
- boolean addAll(int index, Collection<? extends E> c):将指定集合中的所有元素插入到此列表中的指定位置。
- void clear():从此列表中删除所有元素。
- int indexOf(Object o):返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1
- int lastIndexOf(Object o):返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1
- E set(int index, E element):用指定的元素替换此列表中指定位置的元素。
- List subList(int fromIndex, int toIndex):返回此列表中指定的fromIndex和toIndex之间的视图。区间[fromIndex, toIndex)左闭右开。
- boolean remove(Object o):从列表中删除指定元素的第一个出现(如果存在)
- boolean removeAll(Collection<?> c):从此列表中删除包含在指定集合中的所有元素
- Object[] toArray():以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组
- int size():返回此列表中的元素数
- Iterator iterator():以正确的顺序返回该列表中元素的迭代器
- ListIterator listIterator():返回列表中的列表迭代器(按照适当的顺序)
LinkedList特有方法:
- void addFirst(E e):在该列表的开头插入指定的元素
- void addLast(E e):将指定的元素追加到此列表的末尾
- E getFirst():返回此列表中的第一个元素
- E getLast():返回此列表中的最后一个元素
- E removeFirst():从此列表中删除并返回第一个元素
- E removeLast():从此列表中删除并返回最后一个元素
…
Vector特有方法
- void addElement(E obj):将指定的组件添加到此向量的末尾
- E elementAt(int index):返回指定索引处的组件
- Enumeration elements:返回此向量的组件的枚举
- boolean removeElement(Object obj):从此Vector中删除参数的第一个(最低索引)组件
- void removeElementAt(int index):删除指定索引处的组件
- boolean removeAll(Collection<?> c):从此Vector中删除指定集合中包含的所有元素
- void removeAllElements():从此想两种删除所有组件,并将其大小设置为0
…
ArrayList/LinkedList/Vector的异同?ArrayList底层是什么?扩容机制Vector和ArrayList的最大区别:
ArrayList和LinkedList的异同:
- 二者都线程不安全,相对于线程安全的Vector来说,执行效率高。
- 此外,ArrayList是实现了基于动态数组的数据结构,对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList需要移动指针。
- 对于添加add和删除元素remove,LinkedList比较占据优势,因为ArrayList需要移动数据。
- 笼统来说:LinkedList:增删改快______ ArrayList:查询快
ArrayList和Vector的区别
- Vector和ArrayList几乎是完全相同的,唯一的区别在于Vector是同步类(synchronized),属于强同步类,因此开销比ArrayList大,访问要慢。
- Vector每次扩容请求其大小的二倍空间,而ArrayList是1.5倍。