java中List集合的遍历和两种实现类的比较分析

list集合的遍历3种方法:

 

[java] 

  1. package com.sort;
  2. import java.util.ArrayList;
  3. import java.util.Iterator;
  4. import java.util.List;
  5. /**
  6.  * list的三种遍历
  7.  * @author Owner
  8.  *
  9.  */
  10. public class ListTest {
  11.     public static void main(String[] args) {
  12.         List<String> list = new ArrayList<String>();
  13.         list.add(“a”);
  14.         list.add(“b”);
  15.         list.add(“c”);
  16.         list.add(“c”);//可添加重复数据
  17.         //遍历方法一
  18.         for(Iterator<String> iterator = list.iterator();iterator.hasNext();){
  19.             String value = iterator.next();
  20.             System.out.println(value);
  21.         }
  22.         //遍历方法二
  23.         for(String value : list){
  24.             System.out.println(value);
  25.         }
  26.         //遍历方法三
  27.         for(int i=0;i<list.size();i++){
  28.             System.out.println(list.get(i));
  29.         }
  30.     }
  31. }

三种遍历的比较分析:

 

 

方法一遍历:

执行过程中会进行数据锁定,    性能稍差,    同时,如果你想在循环过程中去掉某个元素,只能调用it.remove方法,    不能使用list.remove方法,    否则一定出并发访问的错误.  

 

方法二遍历:

内部调用第一种

 

方法三遍历:

内部不锁定,    效率最高,    但是当写多线程时要考虑并发操作的问题

 

List接口的两种主要实现类ArrayList和LinkedList都可以采用这样的方法遍历

 

关于ArrayList与LinkedList的比较分析
a) ArrayList底层采用数组实现,LinkedList底层采用双向链表实现。
b) 当执行插入或者删除操作时,采用LinkedList比较好。
c) 当执行搜索操作时,采用ArrayList比较好。

 

 

说白了,就是数据结构中的顺序存储和链式存储

标签