我正在寻找java.util.Set中的实现,具有以下特点:寻找一个无界的,基于队列,并实现为java.util.Set
- 绝不应该是并行的同步锁定;所以很明显,我不想使用Collections.synchronizedSet()。
- 应保持广告订单。所以ConcurrentSkipListSet并不可取,因为它使用compareTo()作为equals(),并且要求提供Comparable或Comparator的实现。还有一个ConcurrentLinkedHashMap尽管是LinkedHashMap,但不保留广告订单。
- 应该是无界的。
- 建议使用FIFO链表,因为我的操作只对队列的第一个元素完成。
至于我能找到的唯一正确IMPL是CopyOnWriteArraySet,但该文件中指出:
可变操作(添加,设置,删除, 等),因为它们价格昂贵通常需要复制整个 底层阵列。
在我的情况下,我有很多插入到队列(集合)结束和很多从队列头部删除(和读取)。那么,有什么建议?
我想你可能不得不实施你自己的。 –
“保持插入顺序”听起来不像集合。你确定你想要一个Set而不是一个Queue吗? –
嗯,这不是一个普遍的需求吗? – Mohsen