gpt4 book ai didi

android - 在java中使用集合时如何避免并发修改异常

转载 作者:行者123 更新时间:2023-11-29 15:29:44 25 4
gpt4 key购买 nike

下面代码如何避免并发修改异常?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/

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