是否可以修改已添加到队列中的对象? (例如,我们假设我想实现一个带有事务列表的FIFO队列)我不想/需要更改队列中事务的顺序,我只想更新一些数量,如果可用数量已耗尽从队列中删除事务。我检查了peek / deque等,但这似乎并没有提供想要的行为
答案 0 :(得分:1)
显然,我犯了一个错误。似乎可以通过窥视获取对象的引用并修改内容。
e.g。
Queue<Transaction> bought_fifo = new LinkedList<Transaction>();
Transaction tr2 = bought_fifo.peek();
tr2.setPrice(new BigDecimal(1000000000L));
因为我只需要以FIFO方式调整数量,如果数量不足就转移到下一个交易,它解决了我的需要。
对于更高级的使用(数据的随机更改),您确实可以构建自己的。
答案 1 :(得分: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