概述
在Java中,因为List接口有remove()这个方法,我们只需要调用remove()方法,就可以删除List中的某个元素。
但是在for循环中用remove()就不太行了
根据面向百度开发的经验,总结了四种List循环删除元素的方法
1.使用迭代器删除(推荐)
//使用迭代器删除元素
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
String str = iterator.next();
if(str.equals("2")){
iterator.remove();
}
}
System.out.println(list);
iterator.remove() 方法会在删除当前迭代对象的同时,会保留原来元素的索引,用迭代删除元素是最保险的方法。
2.删除元素后i-1
//使用for循环删除元素
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
for (int i = 0; i < list.size(); i++) {
String str = list.get(i);
if(str.equals("2")){
list.remove(i);
i--;
}
}
System.out.println(list);
删除一个元素后,后边的元素前移1位,i-1,下次循环能访问到前移1位的元素
3.反向删除
//反向循环删除元素
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
for (int i = list.size() - 1; i >= 0 ; i--) {
String str = list.get(i);
if(str.equals("1")){
list.remove(i);
}
}
System.out.println(list);
这样,就算删除了倒数第一个元素,List重排,也只是把后边的元素左移1位,此时倒数第一个元素(下标为1)被删除,接着2替代了1成为了下标为1的元素,但前边的元素不变,i = 0 后依然能够找到其相邻的元素
4.赋值给新的List
//赋值给新的List
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
List<String> list2 = new ArrayList<>();
for (int i = list.size() - 1; i >= 0 ; i--) {
String str = list.get(i);
if(!str.equals("2")){
list2.add(str);
}
}
System.out.println(list);
System.out.println("新的List"+list2);
可以过滤掉不需要的元素后赋值给新的list对象
最后
以上就是虚心黑米为你收集整理的List中循环删除元素的全部内容,希望文章能够帮你解决List中循环删除元素所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复