设计一个方法,用于删除List中大于10的元素
方法一:可以使用Iterator的remove方法,该方法会删除当前迭代对象的同时,维护索引的一致性。如:
public class ListTest {
public static void main(String[] args) {
List<Integer> intList = new ArrayList<>();
Collections.addAll(intList, 112,1, 2, 3, 5, 6,23,33,221,7,9,8,4,0,10,45,42,3435);
Iterator<Integer> it = intList.iterator();
while(it.hasNext()){
Integer value = it.next();;
if(value >10){
it.remove();
}
}
System.out.println(intList);
}
}
方法二:不使用迭代器的解决方案就是,自己维护索引,删除一个元素后,索引-1,如:
public class ListTest {
public static void main(String[] args) {
List<Integer> intList = new ArrayList<>();
Collections.addAll(intList, 112,1, 2, 3, 5, 6,23,33,221,7,9,8,4,0,10,45,42,3435);
for(int i = 0; i < intList.size(); i++) {
Integer value = intList.get(i);
if(value > 10) {
intList.remove(i);
i--;
}
}
System.out.println(intList);
}
}
方法三:还有种取巧的方式是从最后一个元素开始遍历,符合条件的删除,如:
public class ListTest {
public static void main(String[] args) {
List<Integer> intList = new ArrayList<>();
Collections.addAll(intList, 112,1, 2, 3, 5, 6,23,33,221,7,9,8,4,0,10,45,42,3435);
for(int i < intList.size()-1; i>=0; i--) {
Integer value = intList.get(i);
if(value > 10) {
intList.remove(i);
}
}
System.out.println(intList);
}
}
程序创建一个ArrayList,添加1到10之间的10个随机数,然后删除大于5的元素
package test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
public class CreateArrayList {
public static void main(String[] args) {
List<Integer> newList = create(10);
System.out.println(Arrays.toString(newList.toArray()));
List<Integer> deleteList = delete(newList,5);
System.out.println(Arrays.toString(deleteList.toArray()));
}
public static List<Integer> create(int size){
Random r = new Random();
List<Integer> list = new ArrayList<>();
for(int i=0;i<size;i++) {
int temp = r.nextInt(size);
list.add(temp);
}
return list;
}
public static List<Integer> delete(List<Integer> needList,int flagIndex){
for(int i=0;i<needList.size();) {
if(needList.get(i).intValue()<flagIndex) {
needList.remove(i);
i=0;
}else {
i++;
}
}
return needList;
}
}