继承体系
我们知道List是继承Collection接口的使用它写的方法,List也是继承了的。
不清楚的点击链接Collection接口
特有的方法
我们用ArrayList来看。
- void add(int index,E element)
List list = new ArrayList();
list.add("a");//Collection接口中的方法
list.add("b");
list.add(1,"a");//特别的方法 (可以压掉原有元素)
//index<=size&&index<=0
- E remove(int index)
Object ob = list.remove(1);//通过索引删除元素,将被删除的元素返回
//它不会自动装箱,去删除元素 Collection中的方法
- E get(int index)
Object obj1 = list.get(1);//返回1索引位置的元素
// 当然我们可以遍历集合使用索引
- E set(int index,E element)
list.set(1,"f");//将指定元素修改
List中特有的迭代方法
listIterator()
迭代器迭代元素,迭代器修改元素
ListIterator<String> lit = list.listIterator<>(); //如果想在遍历的过程中添加元素,可以用ListIterator中的add方法
while(lit.hasNext()) {
String str = lit.next();
if(str.equals("world")) {
lit.add("javaee");
}
}
其他方法
- boolean hasNext()是否有下一个
- boolean hasPrevious()是否有前一个
- Object next()返回下一个元素
- Object previous();返回上一个元素
实现类的特点
- ArrayList:
- 底层数据结构是数组,查询快,增删慢。
- 线程不安全,效率高。
- Vector:
- 底层数据结构是数组,查询快,增删慢。
- 线程安全,效率低。
Vector相对ArrayList查询慢(线程安全的)
Vector相对LinkedList增删慢(数组结构)
- LinkedList:
- 底层数据结构是链表,查询慢,增删快。
- 线程不安全,效率高。
Vector和ArrayList的区别 - Vector是线程安全的,效率低
- ArrayList是线程不安全的,效率高
共同点:都是数组实现的
ArrayList和LinkedList的区别 - ArrayList底层是数组结果,查询和修改快
- LinkedList底层是链表结构的,增和删比较快,查询和修改比较慢
共同点:都是线程不安全的
使用
——查询多用ArrayList
——增删多用LinkedList
——如果都多ArrayList