1
ConcurrentLinkedQueueがそのコレクションから要素を削除できない場合は知りたいと思います。アイテムは存在しますが、コレクションの中にありますが、ConcurrentLinkedQueueは削除されません
SomeConcurrentLinkedQueue.remove(item)
このアイテムはコレクションから削除されません。コレクションはロックされていますか?
ConcurrentLinkedQueueがそのコレクションから要素を削除できない場合は知りたいと思います。アイテムは存在しますが、コレクションの中にありますが、ConcurrentLinkedQueueは削除されません
SomeConcurrentLinkedQueue.remove(item)
このアイテムはコレクションから削除されません。コレクションはロックされていますか?
ConcurrentLinkedQueue.remove(item)
がfalse
を返す場合、これはitem
がキューのエントリのいずれとも等しくないことを意味します。それがあなたが期待しているものでない場合は、item
のequals()
メソッドでエラーをチェックしてください。
(@Louisワッサーマンが指摘)もう一つの可能性は、キューが複数item
の発生を含んでいることです。 ConcurrentLinkedQueue.remove(item)
は、それらのうちの1つだけを削除します。
まあIアイテムは 'ConcurrentLinkedQueue'にあるかどうかを確認するためにテストを使用するため、これは、' false'のを返していない。 'IF(list.contains(アイテム)){ \t \t \t Log.d( "Removed"、 "Removed"); \t \t \t list.remove(item); \t \t} ' 主な問題は、項目がまだリストの中にあることです! – turbodoom
@turbodoomどのアイテムを意味していますか? list.contains(item)は、list.remove(item)が発生した後にfalseを返すことを簡単に示します。 –
あなたのリスト内にアイテムが_倍数出現している可能性があります。 'queue.remove(item)'はオカレンスを1つだけ削除します。 –