从ConcurrentLinkedDeque中获取特定位置的元素

3

如何从ConcurrentLinkedDeque中获取特定位置的元素,就像ArrayList.get(index)一样?

谢谢和问候,

Rajesh。


没有一种方法可以做到这一点,除非你编写一些代码。 - smk
谢谢,smk。你能简要解释一下你的建议吗? - Rajesh Subramanian
1个回答

3

ConcurrentLinkedDeque不允许随机访问,只能检索第一个或最后一个元素。

虽然你可以遍历它。

ConcurrentLinkedDeque<Integer> dq = new ConcurrentLinkedDeque<>();
Iterator<Integer> itr = dq.iterator();
while (itr.hasNext()) {
    Integer i = itr.next();
}

参考: http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentLinkedDeque.html

这是一个Java并发编程中的数据结构,ConcurrentLinkedDeque是线程安全的双端队列,支持在两端插入和删除元素,并允许多个线程同时执行这些操作。它没有容量限制,因此可以根据需要动态地增长。此外,ConcurrentLinkedDeque不允许null元素。

1
@Rajesh 请注意,对并发集合的随机访问可能确切地像其名称一样行为随机!由于多个线程可能同时更改集合,您永远无法确定第n个元素是否仍然是它应该是的。这就是为什么即使方法“size()”也不能保证返回精确值的原因! - isnot2bad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接