zoukankan      html  css  js  c++  java
  • 【转】Java中 List的遍历

    原文网址:http://blog.csdn.net/player26/article/details/3955906

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

    对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    a    :    list)    {   
           .....   
       }   
       内部调用第一种,    换汤不换药,    这种循环方式还有其他限制,    不建议使用它   
        
       第三种:   
       for(int    i=0;    i<list.size();    i++)    {   
           A    a    =    list.get(i);   
           ...   
       }   
       内部不锁定,    效率最高,    但是当写多线程时要考虑并发操作的问题! 
  • 相关阅读:
    Installshield制作安装程序
    vista以上系统中开发的程序以管理员权限运行
    检查当前系统版本是否为Vista或更高的版本
    在程序运行过程中调用另一个程序
    Spin Control(旋转按钮控件、上下微调按钮控件)
    因改变工具栏图标导致菜单栏高度随之变大的解决方案
    Unicode环境下的字符差异
    注册表API
    文件的读写操作
    const char* 和 char* const
  • 原文地址:https://www.cnblogs.com/wi100sh/p/4491967.html
Copyright © 2011-2022 走看看