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进行迭代的过程中如果删除其中的某个元素会报错,并发操作异样,因而如故宫 遍历的同时须要批改元素,倡议应用ListIteratorListIterator迭代器提供了向前和向后两种遍历形式始终是通过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); } }