刚开始是这样写的然后报错,我以为是迭代器的原因
public static void main(String[] args) {
List<String> strings = Arrays.asList("aa", "bb", "cc");
for (String string : strings) {
strings.removeIf(str -> str.equals("bb"));
}
System.out.println(strings);
}
改了下发现还是报错
public static void main(String[] args) {
List<String> strings = Arrays.asList("aa", "bb", "cc");
Iterator<String> iterator = strings.iterator();
while (iterator.hasNext()) {
String string = iterator.next();
if (string.equals("bb")) {
iterator.remove();
}
}
System.out.println(strings);
}
最后才知道
Arrays.asList返回的是一个不可变的列表,因此无法修改。你可以将其转换为可变的列表,然后再删除元素,简单来讲就是new一个新的列表即可。下面是解决后的代码,这里的for循环没有任何意义,只是复现一下当时是遍历一个dto集合拿id进行比对。
public static void main(String[] args) {
List<String> strings = Arrays.asL

文章讲述了在Java中,尝试在不可变的Arrays.asList()创建的列表上使用removeIf方法时遇到错误,解释了原因(Immutable列表不能修改),并演示了如何通过转化为ArrayList来实现列表元素的删除。
最低0.47元/天 解锁文章
2893

被折叠的 条评论
为什么被折叠?



