List遍歷與刪除
阿新 • • 發佈:2019-01-08
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是執行緒安全的