1. 程式人生 > >List遍歷與刪除

List遍歷與刪除

Collection
關於集合中比較重要的HashSet,HashMap,HashTable,ArrayList,LinkedList,Vector的區別和用法

//遍歷的長度一定要是list.size(),因為後面移除物件之後就會導致list長度變化,如果使用常量,會導致邊界異常
//例如:長度是10,刪除掉了2個,而獲取list物件的10個,則會爆邊界異常,因此是使用list.size()

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListMap {
public static void main(String[] args) {
List list = new ArrayList();
for(int i=0; i<10; i++){
list.add(“testone”);
list.add(“testtwo”);
}

    /*這種方式在迴圈執行過程中會進行資料鎖定,    
     * 效能稍差,    
     * 同時,如果你想在尋歡過程中去掉某個元素,只能呼叫it.remove方法,    
     * 不能使用list.remove方法,    
     * 否則一定出現併發訪問的錯誤. 
     */

    Iterator it1 = list.iterator();
    while (it1.hasNext()) {

        if(it1.equals("testone")){
            System.out.println(it1);
            it1.remove();
        }
        System.out.println(it1.next());
    }

     /* 
      * 第二種:內部呼叫第一種,換湯不換藥,
      * 因此比Iterator 慢,
     * 這種迴圈方式還有其他限制, 
     * 不建議使用它。
      * 
      */
    for (String data : list) {
        System.out.println(data);
    }

    /*
     * 第三種:內部不鎖定,效率最高,
     * 但是當寫多執行緒時要考慮併發操作的問題
     * 
     */
    for (int i = 0; i < list.size(); i++) {
        //包含則刪除
        if(list.contains("testone")){
            list.remove(i);
        }
        String a = list.get(i);
        System.out.println(a);
    }

}

}
Vector是執行緒安全的