清空List,直接調用clear()方法,或者直接賦值為null便可。那刪除List中指定元素呢?
遍歷list,遍歷到符合條件的元素,then remove()?
我們來看下面三種代碼就知道結果啦。
public static void removeList1() { List<String> list = new ArrayList<String>(); list.add("1"); list.add("2"); list.add("3"); list.add("4"); list.add("4"); list.add("5"); System.out.println("刪除前集合的長度為:" + list.size()+":"+list); for (int i = 0; i < list.size(); i++) { System.out.println(i + "---" + list.get(i)); list.remove(i); } System.out.println("刪除后集合的長度為:" + list.size()+":"+list); }
刪除前集合的長度為:6:[1, 2, 3, 4, 4, 5]
0---1
1---3
2---4
刪除后集合的長度為:3:[2, 4, 5]
public static void removeList2() { List<String> list = new ArrayList<String>(); list.add("1"); list.add("2"); list.add("3"); list.add("4"); list.add("4"); list.add("5"); System.out.println("刪除前集合的長度為:" + list.size()+":"+list); for (int i = 0, len = list.size(); i < len; i++) { System.out.println("len="+len+";i="+i+";刪除元素:"+list.get(i)); list.remove(i); len--; i--; } System.out.println("刪除后集合的長度為:" + list.size()+":"+list); }
刪除前集合的長度為:6:[1, 2, 3, 4, 4, 5]
len=6;i=0;刪除元素:1
len=5;i=0;刪除元素:2
len=4;i=0;刪除元素:3
len=3;i=0;刪除元素:4
len=2;i=0;刪除元素:4
len=1;i=0;刪除元素:5
刪除后集合的長度為:0:[]
public static void removeList3() { List<String> list = new ArrayList<String>(); list.add("1"); list.add("2"); list.add("3"); list.add("4"); list.add("4"); list.add("5"); System.out.println("刪除前集合的長度為:" + list.size()+":"+list); Iterator<String> it=list.iterator(); while(it.hasNext()&&!it.next().equals("")){ it.remove(); } System.out.println("刪除后集合的長度為:" + list.size()+":"+list); }
刪除前集合的長度為:6:[1, 2, 3, 4, 4, 5]
刪除后集合的長度為:0:[]
From:
https://blog.csdn.net/liusong0605/article/details/48105103
之前在面試的時候遇到過這樣一個問題,
list的大小為100,其中存放的值分別為1,2,3,... , 100, 要求刪除list中能被3整除的元素,返回新的list。
考察的也是ArrayList數組刪除時,所刪除的元素后面的元素都會前移這個知識點。
//list的大小為100,其中存放的值分別為1,2,3,... , 100, //要求刪除list中能被3整除的元素,返回新的list for(int i=1;i<=100;i++){ list.add(i); } int lengh=list.size();
for(int i=0;i<lengh;i++){ if(list.get(i)%3==0){ list.remove(i); i--; lengh--; } }
for(Integer num : list){ System.out.print(num + " "); } System.out.println();