2012-01-30 21 views
1

ConcurrentLinkedQueueがそのコレクションから要素を削除できない場合は知りたいと思います。アイテムは存在しますが、コレクションの中にありますが、ConcurrentLinkedQueueは削除されません

SomeConcurrentLinkedQueue.remove(item) 

このアイテムはコレクションから削除されません。コレクションはロックされていますか?

答えて

6

ConcurrentLinkedQueue.remove(item)falseを返す場合、これはitemがキューのエントリのいずれとも等しくないことを意味します。それがあなたが期待しているものでない場合は、itemequals()メソッドでエラーをチェックしてください。

(@Louisワッサーマンが指摘)もう一つの可能​​性は、キューが複数item発生を含んでいることです。 ConcurrentLinkedQueue.remove(item)は、それらのうちの1つだけを削除します。

+0

まあIアイテムは 'ConcurrentLinkedQueue'にあるかどうかを確認するためにテストを使用するため、これは、' false'のを返していない。 'IF(list.contains(アイテム)){ \t \t \t Log.d( "Removed"、 "Removed"); \t \t \t list.remove(item); \t \t} ' 主な問題は、項目がまだリストの中にあることです! – turbodoom

+0

@turbodoomどのアイテムを意味していますか? list.contains(item)は、list.remove(item)が発生した後にfalseを返すことを簡単に示します。 –

+2

あなたのリスト内にアイテムが_倍数出現している可能性があります。 'queue.remove(item)'はオカレンスを1つだけ削除します。 –

関連する問題