如何更新地图中的值,维护订单

时间:2012-12-17 21:00:16

标签: java collections

我有TreeMap个自定义Comparator。我想更新Map的其中一个值,但是如果Comparator检查的字段发生了变化,Map会保持其顺序吗?

1 个答案:

答案 0 :(得分:2)

您永远不应修改存储在地图中的密钥。或者至少不修改用于实现equals()hashCode()(在HashMap的情况下)或compareTo() / compare()的任何字段(在SortedMap的情况下) )。

这会使地图处于不一致的状态,并且在执行此操作后您无法可靠地工作。

当然,您可以从地图中删除密钥,修改密钥,然后重新插入。

但是你最好使用不可变类型作为地图的键,以避免自己在脚下射击。