Java中 List的遍历

来源:互联网 发布:硬笔书法知乎 编辑:程序博客网 时间:2024/04/30 03:48

 import java.util.ArrayList;  
  1. import java.util.Iterator;  
  2. import java.util.List;  
  3. public class ListTest  
  4.  public static void main(String[] args)  
  5.   List<Integer> list new ArrayList<Integer>();  
  6.   list.add(1);  
  7.   list.add(2);  
  8.   list.add(3);  
  9.   for (Iterator list.iterator(); i.hasNext();)  
  10.    System.out.println(i.next()); // line 1  
  11.   
  12.  
  13.    
  14. public class ListTest2  
  15.   public static void main(String[] args){  
  16.          List list new ArrayList();  
  17.                  list.add(new Integer(100));  
  18.                  list.add(new Float(150.60));  
  19.                  list.add(new String("abc"));  
  20.          for(Iterator list.iterator(); i.hasNext();)  
  21.                  System.out.println(i.next());  
  22.    
  23. //   List<Integer> list new ArrayList<Integer>();  
  24. //         list.add(1);  
  25. //         list.add(2);  
  26. //         list.add(3);  
  27. //         for(Integer list){  
  28. //         System.out.println(i);        // OK  
  29. //         }  
  30.         
  31.  
  32.    
  33. //虽然List的Generic是Integer,但.next()返回的类型是Object  
  34. public class ListTest3  
  35.  public static void main(String[] args)  
  36.   // List<Integer> list new ArrayList<Integer>();  
  37.   // list.add(1);  
  38.   // list.add(2);  
  39.   // list.add(3);  
  40.   // for(Iterator list.iterator(); i.hasNext();){  
  41.   // Integer integerRef (Integer) i.next(); //line 1  
  42.   // //Compile Error  
  43.   // System.out.println(integerRef); // line 2  
  44.   // }  
  45.   List<Integer> list new ArrayList<Integer>();  
  46.   list.add(1);  
  47.   list.add(2);  
  48.   list.add(3);  
  49.   for (Iterator<Integer> list.iterator(); i.hasNext();)  
  50.    Integer integerRef i.next(); // line 1  
  51.    // OK  
  52.    System.out.println(integerRef); // line 2  
  53.    
  54.   
  55.   

对List的遍历有三种方式   
    
  List<A>   list     new   ArrayList<A>();   
  list.add(new   A());   
  list.add(new   A());   
  ...   
    
   第一种:   
  for(Iterator<A>   it     list.iterator();   it.hasNext();       
      ....   
    
   这种方式在循环

执行过程中会进行数据锁定,   性能稍差,   同时,如果你想在循环过程中去掉某个元素,只能调用it.remove方法,   不能使用list.remove方法,   否则一定出并发访问的错误.   
    
  第二种:   
  for(A       list)     
      .....   
    
  内部调用第一种,   换汤不换药,   这种循环方式还有其他限制,   不建议使用它   
    
  第三种:   
  for(int   i=0;   i<list.size();   i++)     
            list.get(i);   
      ...   
    
  内部不锁定,   效率最高,   但是当写多线程时要考虑并发操作的问题
原创粉丝点击