linkedList 绝对于 ArrayList 领有更加丰盛的办法实现,须要的时候能够间接查问 api 文档,这里就不列出
对于 Vector:
1、Vector 也是 List 接口的一个子类实现
2、Vector 和 ArrayList 一样,底层都是应用数组进行实现
3、面试常常问两者的区别(1)ArrayList 是线程不平安的,效率高,Vector 是线程平安的,然而效率较低(2)ArrayList 在进行扩容的时候,是扩容 1.5 倍,Vector 扩容的时候,是扩容 2 倍
接下来讲一下对于 List 中的迭代器 Iterator:
在 java 代码中蕴含 3 种循环形式
** do。。。while
while
for 还有一种加强 for 循环的形式,能够简化循环的编写 **
对于 Iterable
所有的汇合类都默认实现了 Iterable 的接口 (通过外部类来实现调用),实现此接口意味着具备了加强 for 循环的能力,也就是 for-each
加强 for 循环实质上应用的也是 iterator 性能, 此接口意味着具备了加强 for 循环的能力,也就是 for-each
办法:
iterator() 返回另一个 Iterator 接口
foreach() 在 iterator 办法中,要求返回一个 Iterator 的接口实例对象,此接口中蕴含了 hasNext()、next()
在应用 iterator 进行迭代的过程中如果删除其中的某个元素会报错,并发操作异样,因而如故宫 遍历的同时须要批改元素, 倡议应用 ListIterator
ListIterator 迭代器提供了向前和向后两种遍历形式
始终是通过 corsor 和 lastret 的指针来获取元素值及向下的遍历索引
当应用向前遍历的时候必须要保障指针在迭代器的结尾,否则无奈获取值
public static void main(String[] args) {ArrayList list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
int i1 = 0;
for(int i = 0;i<list.size();i++)
{System.out.println(list.get(i));
}
// 迭代器
// Iterator iterator =list.iterator();
// 边遍历边删除元素必须用到此办法
ListIterator listIterator = list.listIterator();
while (listIterator.hasNext()){Object o = listIterator.next();
if(o.equals(1)){listIterator.remove();
}
System.out.println(listIterator.next());
}
// 这时候指针在最初
while(listIterator.hasPrevious()){System.out.println(listIterator.previous());
}
System.out.println("-------------");
for(Object i :list){System.out.println(i);
}
}