繁体   English   中英

Java ArrayList 异常 - java.util.ConcurrentModificationException [重复]

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM