gpt4 book ai didi

java - 使用java从字符列表中删除数字

转载 作者:行者123 更新时间:2023-12-02 13:41:37 24 4
gpt4 key购买 nike

我想显示字符列表中出现的数字,然后删除该数字。这是我的代码:

打包 myTrials;

import java.util.ArrayList;
import java.util.ListIterator;

public class MyTrials {
public static void main(String[] args) {
ArrayList<Character> list = new ArrayList<Character>();
list.add('a');
list.add('1');
list.add('5');
System.out.println(list.size());
for( ListIterator i = list.listIterator(list.size()); i.hasPrevious();){
Character c = (Character) i.previous();
if( Character.isDigit(c)){
System.out.println(c + " is a digit");
list.remove(c);
}
}
System.out.println(list.size());
}
}

这是错误消息:

3
5 is a digit
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$ListItr.previous(AbstractList.java:386)
at mytrials.MyTrials.main(MyTrials.java:27)
Java Result: 1

此错误的原因是什么以及如何纠正。

最佳答案

尝试

i.remove(); 

而不是

list.remove(c);

See here

请注意,Iterator.remove 是在迭代期间修改集合的唯一安全方法;如果在迭代过程中以任何其他方式修改基础集合,则行为未指定。

当您需要时,使用迭代器而不是 for-each(loop) 结构:

  • 删除当前元素。for-each 构造隐藏了迭代器,因此您无法调用remove。因此,for-each 构造不能用于过滤。

  • 并行迭代多个集合。

关于java - 使用java从字符列表中删除数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16237352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com