【问题标题】:Copying CopyOnWriteArrayList to classic ArrayList, how?将 CopyOnWriteArrayList 复制到经典 ArrayList,如何?
【发布时间】:2015-12-28 00:36:46
【问题描述】:

已经尝试过正常赋值并且:

Collections.copy(lostPackets, historyList);

抛出:

Exception in thread "Thread-3" java.lang.IndexOutOfBoundsException: Source does not fit in dest

有什么方法可以将 COWArrayList 复制到普通的 ArrayList 中?

【问题讨论】:

  • 对于开发人员来说了解如何使用您打算使用的任何 API 的文档很重要,在这种情况下,java 有关于类详细信息的官方文档,也称为 javadocs,谷歌搜索你可以找到ArrayList javadoc

标签: java arraylist copyonwritearraylist


【解决方案1】:

lostPackets.addAll(historyList);

请注意,如果您只想保留来自CopyOnWriteArrayList 的最新记录,请先使用clear() 方法清除ArrayList,然后使用addAll()

【讨论】:

    【解决方案2】:

    给你

    List arrayList = Arrays.asList(cowArrayList.toArray());

    【讨论】:

    • 这不会创建 java.util.ArrayList
    • 不幸的是不起作用。要求“演员”到“名单”,这样做之后,标志着这是不可能的。 lostPackets.addAll(historyList) 工作
    猜你喜欢
    • 1970-01-01
    • 2017-11-24
    • 2018-10-05
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    相关资源
    最近更新 更多