我正在寻找具有以下功能的 java.util.Set 的实现:
- 应该是并发的,而不是同步锁定;所以很明显我不想使用Collections.synchronizedSet ()。
- 应保持插入顺序。所以 ConcurrentSkipListSet 并不可取,因为它使用 compareTo() 作为 equals(),并且需要提供 Comparable 或 Comparator 的实现。还有一个ConcurrentLinkedHashMap,尽管有 LinkedHashMap,但它不保持插入顺序。
- 应该是无界的。
- 推荐使用 FIFO 链表,因为我的操作只针对队列的第一个元素。
据我所知,唯一合适的 impl 是CopyOnWriteArraySet,但它在文档中指出:
可变操作(添加、设置、删除等)代价高昂,因为它们通常需要复制整个底层数组。
就我而言,我有很多插入到队列末尾(集合)和很多从队列头部删除(和读取)。那么,有什么推荐吗?