下面代码如何避免并发修改异常? BeanList 是 Bean 对象的列表
Bean bean = BeanList.get(0);
List<Bean> tempList = BeanList.subList(1, BeanList.size());
Collections.sort(tempList);
tempList.add(0, bean);
BeanList.clear();
BeanList.addAll(tempList);
最佳答案
作为 future 的引用。尝试将您的问题简化为最小的编译示例。它使我们的工作更轻松。描述问题中的所有数据类型。这里我们要猜测你的BeanList的数据类型是什么。还要遵守 Java 命名约定。类名以大写字母开头。成员变量以小写字母开头(即 beanList 而不是 BeanList)。格式不正确的代码对于我们这些您需要帮助的人来说很难阅读。提供堆栈跟踪并说明代码中的哪一行导致了异常。
您的问题不在 Bean 类或同步中。
您的问题在于您对子列表的操作方式。
List.subList() 并没有真正创建一个新列表。它在现有列表中创建一个“ View ”,并与原始列表共享数据结构。当您清除原始列表的内容时,您也会清除子列表的内容,然后当您尝试访问子列表(其数据已更改)时,您会遇到异常。
创建一个新列表,向其中添加子列表中的所有元素。
List<Bean> tempList = new ArrayList<Bean>();
tempList.addAll(list.subList(1, list.size()));
关于android - 在java中使用集合时如何避免并发修改异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8180611/