Java ConcurrentModificationException当我访问列表列表而不修改

Java ConcurrentModificationException当我访问列表列表而不修改,java,list,multidimensional-array,Java,List,Multidimensional Array,当我使用此函数访问list of list时,它会在第二个for循环中生成ConcurrentModificationException,但我不明白为什么会触发此异常 public static List<List<Dico>> weight_term(List<List<Dico>> sublists ,List<String> sinificativ ) { List<List<Dico>>

当我使用此函数访问list of list时,它会在第二个for循环中生成ConcurrentModificationException,但我不明白为什么会触发此异常

 public static List<List<Dico>> weight_term(List<List<Dico>> sublists ,List<String> sinificativ )   
 {

    List<List<Dico>> matrix_node_term = new ArrayList<>();

    List<Dico> list_node =  new ArrayList<>();// a new list for node

    for (List<Dico> sublist : sublists) // to get each sublist List<Dico>
    {
        for (Dico dico : sublist)  // get each Dico in the sublist -->ConcurrentModificationException
        {
            String term =dico.getTerm();            
            int id = dico.getDocId();

            if(sinificativ.contains(term)) // if this term exist in sinificativ erm list
            {
                list_node.add(dico); // it add to list_node 
            }
            else
            {
                list_node.add(new Dico(id,term,0.0)); // it add to list_node with null weigth
            }
        }            
        matrix_node_term.add(list_node); // add each list to list of list 
    }

    return matrix_node_term;
 }

触发此异常时,不会对列表的sutute或其元素进行任何修改。

问题来自一个用于将列表拆分为多个列表的函数:

列表子列表=新的ArrayList(更改);
for(int i=0;i
解决办法来自

列表子列表=新的ArrayList(更改);
for(int i=0;i

感谢您的帮助

ConcurrentModificationException
的根本原因是您在迭代过程中修改了集合的结构it@CoderNeji如果在注释之前阅读代码,您将看到
List\u node=new ArrayList();//节点的新列表
这是新列表我不更改旧列表中的任何内容list@tommy我想我已经解决了。是否使用
List.subList
创建了
子列表中的
列表
;对于(int i=0;i
,问题应该会消失。@pbabcdefp-tks现在我对Java堆空间有问题,但我可以继续,谢谢你的帮助和时间
 public class Dico  implements Comparable 
 {
      private final String m_term;
      private double m_weight;
      private final int m_Id_doc;

      public Dico(int Id_Doc,String Term,double tf_ief ) 
      {
         this.m_Id_doc = Id_Doc;
         this.m_term = Term;
         this.m_weight = tf_ief;   
      }
}
List<List<Dico>> sublists = new ArrayList<>(change);

for (int i = 0; i < change; i++)
{ 
   sublists.add(list.subList(changes[i],changes[i + 1]));
}
List<List<Dico>> sublists = new ArrayList<>(change);
for (int i = 0; i < change; i++)
{
  sublists.add(newArrayList<Dico>(list.subList(changes[i], changes[i + 1])));
}