我正在寻找一个不允许重复元素的队列(旧的重复元素总是被删除,并且在队列的末尾是新添加的新元素)。并且是线程安全的。一个线程正在向队列添加元素,第二个线程正在读取和删除元素。 在标准的java库中,还是在guava / apache中有用吗?
答案 0 :(得分:2)
例如,您可以使用Guava' Forwarding{,Blocking}{Queue,Deque}
。
您将要执行的操作HashSet
作为实施的一部分,您将尝试.add()
个新元素;如果.add()
返回false,请不要添加到代理。
当然,当你从队列中删除元素时,不要忘记来自集合的.remove()
!
(这假设通过"重复"在这里你的意思是"是.equals()&#34 ;;如果另一方面你使用PriorityQueue
你想要的使用TreeSet
代替