package chen.arraylist.test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> al = new ArrayList<String>();
al.add("zhangsan");
al.add("lisi");
al.add("wangwu");
al.add("zhaoliu");
fun(al);
System.out.println("---------------华丽的分割线1---------------");
fun1(al);
System.out.println("---------------华丽的分割线2---------------");
fun2(al);
System.out.println("---------------华丽的分割线3---------------");
fun3(al);
System.out.println("---------------华丽的分割线4---------------");
fun4(al);
}
/**
* 这是最初学遍历的集合使用的方法
*
*/
public static void fun(ArrayList<String> al){
Object[] obj =al.toArray();
for(int i=0;i<obj.length;i++){
String s= (String)obj;
System.out.println(s);
}
}
/**
* Iterator迭代器是collection常用的迭代器,我们一般用它遍历元素
* 但在遍历过程中我们不能增删集合中元素,否则出现并发修改异常
* Iterator也没有提供add放用于增加元素。
* @param al
*/
public static void fun1(ArrayList<String> al){
Iterator it = al.iterator();
while(it.hasNext()){
String s =(String)it.next();
System.out.println(s);
}
}
/**
* List的特有迭代器ListIterator,,相比于Iterator,在遍历中
* 通过该迭代器,我们可以用他的成员方法增加元素而不产生并发修改异常
* 但是,值得注意的是使用if(s.equals("lisi")){
li.add("qianqi");修改原素添加的的是lisi的后面 而不是ArrayList的最后
*
*/
public static void fun2(ArrayList<String> al){
ListIterator li = al.listIterator();
while(li.hasNext()){
String s =(String)li.next();
if(s.equals("lisi")){
li.add("qianqi");
}
System.out.println(s);
}
System.out.println(al);
}
/**
* fun3使用的是增强for变遍历ArrayList
* 在增强for里不能修改ArrayList中的元素
* 如果坚持尝试用Iterator 或者数组修改其中元素,会包并发修改异常。
* 因为增强for的底层是Iterator
*/
public static void fun3(ArrayList<String> al){
for(String s : al ){
System.out.println(s);
}
}
/**
* 通过for循环以及ArrayList的size()和get()方法可以遍历ArrayList
* 并且在遍历的过程中。我们可以通过List的add方法增添元素而不产生
* 异常,但注意的是add是在最list的最后增加元素的。
*/
public static void fun4(ArrayList<String>al){
for(int i=0;i<al.size();i++){
String s =al.get(i);
if(s.equals("zhangsan")){
al.add("laowang");
}
System.out.println(s);
}
System.out.println(al);
}
}
其运行结果如图所示
|
|