- package com.sort;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- /**
- * list的三種遍歷
- *
- */
- public class ListTest {
- public static void main(String[] args) {
- List<String> list = new ArrayList<String>();
- list.add("a");
- list.add("b");
- list.add("c");
- list.add("c");//可添加重復數據
- //遍歷方法一
- for(Iterator<String> iterator = list.iterator();iterator.hasNext();){
- String value = iterator.next();
- System.out.println(value);
- }
- //遍歷方法二
- for(String value : list){
- System.out.println(value);
- }
- //遍歷方法三
- for(int i=0;i<list.size();i++){
- System.out.println(list.get(i));
- }
- }
- }
三種遍歷的比較分析:
方法一遍歷:
執行過程中會進行數據鎖定, 性能稍差, 同時,如果你想在循環過程中去掉某個元素,只能調用it.remove方法。
方法二遍歷:
內部調用第一種
方法三遍歷:
內部不鎖定, 效率最高, 但是當寫多線程時要考慮並發操作的問題
List接口的兩種主要實現類ArrayList和LinkedList都可以采用這樣的方法遍歷
關於ArrayList與LinkedList的比較分析
a) ArrayList底層采用數組實現,LinkedList底層采用雙向鏈表實現。
b) 當執行插入或者刪除操作時,采用LinkedList比較好。
c) 當執行搜索操作時,采用ArrayList比較好。
說白了,就是數據結構中的順序存儲和鏈式存儲