首先创建一个list集合,并填入元素
public void listExercise(){
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("aaa");
list.add("aaa");
list.add("bbb0");
list.add("bbb1");
list.add("bbb2");
list.add("bbb3");
list.add("ccc");
list.add("ccc");
list.add("ccc");
错误的删除方法
for (int i = 0; i < list.size(); i++) {
if (list.get(i).contains("bbb")) {
list.remove(i);
}
}
由于数组列表的特性,遍历删除中每次删除一个元素,下一个元素的索引会自动 -1。这就导致了无法删除相邻元素的问题。所以我们应采用下面的删除方法。
ArrayList删除方法
- 采用倒序遍历的方法
for (int i = list.size() - 1; i >= 0; i--) {
if (list.get(i).contains("bbb")){
list.remove(i);
}
}
从上面的错误方法可知,他的索引会自动 -1,那么我们可以采取倒序遍历,从下往上删除。
- 使用迭代器删除
Iterator it = list.iterator();
while (it.hasNext()){
if(it.next().toString().contains("bbb")){
it.remove();
}
}
- Lambda表达式删除
list.removeIf(s -> s.contains("bbb"));
由于从JDK1.8之后 JAVA开始支持Lambda表达式了,这种方法写起来简单,快捷。
- 正确结果展示
程序源码
package com.godgy.test;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
/**
* @author : Mr.Godgy
* @version : 1.0
* @date : 2022/9/7
* @description:
*/
public class Exercise {
@Test
public void listExercise(){
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("aaa");
list.add("aaa");
list.add("bbb0");
list.add("bbb1");
list.add("bbb2");
list.add("bbb3");
list.add("ccc");
list.add("ccc");
list.add("ccc");
//此方法遍历只会删除bbb1和bbb3
/* for (int i = 0; i < list.size(); i++) {
if (list.get(i).contains("bbb")) {
list.remove(i);
}
}*/
//迭代器删除
/* Iterator it = list.iterator();
while (it.hasNext()){
if(it.next().toString().contains("bbb")){
it.remove();
}
}*/
//采取逆序遍历来删除
/* for (int i = list.size() - 1; i >= 0; i--) {
if (list.get(i).contains("bbb")){
list.remove(i);
}
}*/
//使用lambda删除(JDK1.8以后)
list.removeIf(s -> s.contains("bbb"));
list.forEach(item-> System.out.println(item));
}
}
感谢您的来访,获取更多精彩文章请收藏本站。
© 版权声明
THE END
暂无评论内容