我正在尋找java.util.Set中的實現,具有以下特點:尋找一個無界的,基於隊列,並實現爲java.util.Set
- 絕不應該是並行的同步鎖定;所以很明顯,我不想使用Collections.synchronizedSet()。
- 應保持廣告訂單。所以ConcurrentSkipListSet並不可取,因爲它使用compareTo()作爲equals(),並且要求提供Comparable或Comparator的實現。還有一個ConcurrentLinkedHashMap儘管是LinkedHashMap,但不保留廣告訂單。
- 應該是無界的。
- 建議使用FIFO鏈表,因爲我的操作只對隊列的第一個元素完成。
至於我能找到的唯一正確IMPL是CopyOnWriteArraySet,但該文件中指出:
可變操作(添加,設置,刪除, 等),因爲它們價格昂貴通常需要複製整個 底層陣列。
在我的情況下,我有很多插入到隊列(集合)結束和很多從隊列頭部刪除(和讀取)。那麼,有什麼建議?
我想你可能不得不實施你自己的。 –
「保持插入順序」聽起來不像集合。你確定你想要一個Set而不是一個Queue嗎? –
嗯,這不是一個普遍的需求嗎? – Mohsen