
[英]java.util.ConcurrentModificationException on ArrayList
[英]Java ArrayList Exception - java.util.ConcurrentModificationException [duplicate]
我试图在一个句子中找到最长的单词。 这就是我使用 ArrayList 的原因。 但我得到一个例外:
Exception in thread "main" java.util.ConcurrentModificationException
at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1013)
at java.base/java.util.ArrayList$Itr.next(ArrayList.java:967)
at com.company.Main.LongestWord(Main.java:20)
at com.company.Main.main(Main.java:42)
这是 LongestWord 方法:
public static String LongestWord(String sen) {
String[] sgksvs = sen.split("[^a-z^0-9]");
List<String> list=Arrays.stream(sgksvs).toList();
List<String> liste=new ArrayList<>(list);
int count=0;
String biggestStr="";
for(String str1 : liste){
int num1=str1.length();
count=0;
for(String str2 : liste){// LINE 20
int num2=str2.length();
if(num1 > num2){
count++;
}else if(num1 == num2){
liste.remove(liste.indexOf(str2));
}
}
if(count == liste.size()){
biggestStr=str1;
}
}
return biggestStr;
}
我应该怎么做才能使normlace工作?
问题在于for(String str2: liste)
。
如果您删除在增强的 for 循环中链接的内容,Java 会感到困惑(因为接下来应该在哪里 go?)。 您可以将其更改为标准 for 循环(即,如下所示):
for (int i = 0; i < liste.size(); i++)
String str1 = liste.get(i);
或将要删除的元素收集在一个地方并在循环后删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.