【问题标题】:Add Collection (ArrayList) to ConcurrentQueue将集合(ArrayList)添加到 ConcurrentQueue
【发布时间】:2015-07-21 20:29:22
【问题描述】:

我有一段代码构建了一个自定义类类型的 ArrayList 作为函数的输出。然后,我尝试将此 ArrayList 添加到 ConcurrentLinkedDeque。似乎发生的事情是 ConcurrentLinkedDeque 最终包含 ArrayList.size() 中最后一个元素的 ArrayList。

我已经进行了各种检查以查看 ArrayList 是否正确构建并包含正确的元素,但似乎没有看穿这个问题。将集合添加到 ConcurrentLinkedDeque 有什么特殊之处吗?

【问题讨论】:

    标签: java arraylist linked-list queue


    【解决方案1】:

    你能试试这样的吗

    public class ConcurrentLDTrial{
        public static void main(String[] args) {
            List<Integer> a = new ArrayList<Integer>();
            a.add(2);
            a.add(3);
            ConcurrentLinkedDeque<Integer> cd = new ConcurrentLinkedDeque<Integer>(a);
            System.out.println(cd);
        }
    }
    

    我得到的输出是 [2, 3] ,这是预期的。

    将数据结构适当地转换为您的自定义类。

    【讨论】:

      【解决方案2】:

      现在看来可以了。我发现了一个涉及内存分配的错误。

      addall(Collection) 适用于 ConcurrentLinkedDeque。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-27
        • 2015-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-04
        相关资源
        最近更新 更多