Java 重命名hashmap的键值而不是重新插入

Java 重命名hashmap的键值而不是重新插入,java,hashmap,Java,Hashmap,正如标题所说,有没有一种简单的方法来更改hashmap的键 在这里,我更新hashmap的所有值 stock.put(itemCode.getText(), new StockData.Item(itemName.getText(),(Double) priceS.getValue(), (Integer)quantityS.getValue(), file.getName())); 现在我想更改密钥,我以前使用过删除和插入数据的方法,但顺序发生了更改,我不希望发生这种情况。我认为您不能。 H

正如标题所说,有没有一种简单的方法来更改hashmap的键

在这里,我更新hashmap的所有值

stock.put(itemCode.getText(), new StockData.Item(itemName.getText(),(Double) priceS.getValue(), (Integer)quantityS.getValue(), file.getName()));
现在我想更改密钥,我以前使用过删除和插入数据的方法,但顺序发生了更改,我不希望发生这种情况。

我认为您不能。
HashMap
没有顺序,根据键的散列值插入对象,如果更改键,则更改其散列,从而更改它出现在
HashMap
中的bucket。如果您想订购地图,最好使用
TreeMap

我们遇到了这个问题,从Java 7移动到Java 8,有几个测试根据
HashMaps
toString
值断言HashMap的内容,这没有确定的顺序,但在Java 7下它似乎可以工作,但在Java 8下测试失败。

我认为您不能。
HashMap
没有顺序,根据键的散列值插入对象,如果更改键,则更改其散列,从而更改它出现在
HashMap
中的bucket。如果您想订购地图,最好使用
TreeMap


从Java 7到Java 8,我们遇到了这个问题。几个测试根据
HashMaps
toString
值断言HashMap的内容,这没有确定的顺序,但在Java 7下它似乎可以工作,但在Java 8下测试失败。

如果要使用
HashMap
,插入后,您的关键点不应更改


如果顺序对您很重要,您应该使用
SortedMap
(例如
TreeMap
)的实现。

如果您想使用
HashMap
,插入后您的键不应该更改


如果顺序对您很重要,您应该使用一个
SortedMap
(例如
TreeMap
)的实现。

HashMap
不能保证项目的顺序,它们在
HashMap
中的位置由从键计算的
hashcode
确定。因此,当您实际删除以前的
键值
条目并插入新条目时,更改键将更改位置

HashMap

此类不保证地图的顺序;特别是,它不能保证订单在一段时间内保持不变


HashMap
不保证项目的顺序,它们在
HashMap
中的位置由从键计算的
hashcode
确定。因此,当您实际删除以前的
键值
条目并插入新条目时,更改键将更改位置

HashMap

此类不保证地图的顺序;特别是,它不能保证订单在一段时间内保持不变


HashMap
没有顺序。您所说的“顺序已更改”是什么意思?
HashMap
没有顺序。您所说的“顺序已更改”是什么意思?或者一个
LinkedHashMap
-取决于OP想要什么。“一些测试基于
HashMaps
toString值断言了
HashMap
的内容。”。哦…@是的!告诉我:SOr a
LinkedHashMap
-取决于OP想要什么。”一些测试基于
HashMaps
toString
值断言了
HashMap
的内容。哦…@是的!告诉我吧:S