2017-10-15 12 views
0

すでにキューに追加されているオブジェクトを変更することはできますか? (例えば、トランザクションのリストを持つFIFOキューを実装したいと仮定しましょう)キュー内のトランザクションの順序を変更する必要はありません。いくつかの数量を更新したいだけで、使用可能な量がなくなった場合キューからのトランザクション私はpeek/deque等をチェックしましたが、それは望ましい振る舞いを提供するようには見えません。既にキューに入れられているデータを変更するjava

+1

変更したいオブジェクトへの参照がすでにある場合は、キューも同じオブジェクトを参照するため、キューでも変更されます。そうしないと、キュー内の特定のオブジェクトを見つけてアクセスする方法を提供する必要があります。 Javaで 'Queue'インターフェースを実装している' Collection'は 'Iterator'実装を使って' Queue'を検索することができます。 –

+0

カスタム実装を使用している場合は、参考になる可能性があるため、行こうとする可能性があります.thx – jcuypers

答えて

1

明らかに私は間違いを犯しました。ピックでオブジェクトへの参照を取得し、内容を変更することは可能であるようです。

Queue<Transaction> bought_fifo = new LinkedList<Transaction>(); 
Transaction tr2 = bought_fifo.peek(); 
tr2.setPrice(new BigDecimal(1000000000L)); 

私はFIFO方式で量 を適応と量が、それは私の必要性を解決するに十分でない場合は次のトランザクションに移動する必要があります。より高度な使用(データのランダムな変更)のために、あなた自身が実際に構築することができます。ありがとう

0

javaでは、オブジェクトが実際にそのオブジェクトへの参照を保持するすべての変数。だからあなたがまだあなたのオブジェクトをどこかに持っていればそれを編集することができます。例:

Object test= new Object(); 

ArrayList<Object> list =new ArrayList(); 

list.add(test) 

//if you change the object test now and then take the object from the list it will be changed 
関連する問題