正如标题所说,有一种简单的方法来改变我的hashmap的键吗?
这里我更新了我的hashmap的所有值
stock.put(itemCode.getText(), new StockData.Item(itemName.getText(),(Double) priceS.getValue(), (Integer)quantityS.getValue(), file.getName()));
现在我想更改密钥,我之前使用删除和插入有效的数据,但订单已更改,我不想发生。
答案 0 :(得分:3)
如果您想使用HashMap
,您的密钥在插入后不应更改。
如果订单对您很重要,您应该使用SortedMap
(例如TreeMap
)的实现。
答案 1 :(得分:1)
我认为你不能。
HashMap
没有顺序,根据密钥的哈希值插入对象,如果更改密钥,则更改其哈希值,从而更改其显示在HashMap
内的桶。如果您想订购地图,最好使用TreeMap
我们遇到了从Java 7迁移到Java 8的问题。几个测试基于HashMaps
toString
值断言HashMap的内容,这没有确定的顺序,但在Java 7下它似乎但是在Java 8下测试失败了。
答案 2 :(得分:1)
HashMap
不保证商品的顺序,它们在HashMap
内的位置由根据密钥计算的hashcode
确定。因此,更改密钥将更改位置,因为您实际删除了先前的key value
条目并插入了新条目。
来自HashMap
documentation
此课程不保证地图的顺序;特别是,它不保证订单会随着时间的推移保持不变。