我有TreeMap
个自定义Comparator
。我想更新Map的其中一个值,但是如果Comparator
检查的字段发生了变化,Map会保持其顺序吗?
答案 0 :(得分:2)
您永远不应修改存储在地图中的密钥。或者至少不修改用于实现equals()
和hashCode()
(在HashMap的情况下)或compareTo()
/ compare()
的任何字段(在SortedMap的情况下) )。
这会使地图处于不一致的状态,并且在执行此操作后您无法可靠地工作。
当然,您可以从地图中删除密钥,修改密钥,然后重新插入。
但是你最好使用不可变类型作为地图的键,以避免自己在脚下射击。