1

我有TreeMap一个自定义的Comparator. 我想更新 Map 的值之一,但如果检查的字段Comparator发生更改,Map 是否保持其顺序?

4

1 回答 1

2

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

这将使地图处于不一致的状态,并且您不能指望它在这样做之后可靠地工作。

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

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

于 2012-12-17T21:04:12.907 回答