清空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();