Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有TreeMap一个自定义的Comparator. 我想更新 Map 的值之一,但如果检查的字段Comparator发生更改,Map 是否保持其顺序?
TreeMap
Comparator
您永远不应该修改存储在地图中的键。或者至少不修改用于实现equals()和hashCode()(在 HashMap 的情况下)或compareTo()/ compare()(在 SortedMap 的情况下)的任何字段。
equals()
hashCode()
compareTo()
compare()
这将使地图处于不一致的状态,并且您不能指望它在这样做之后可靠地工作。
当然,您可以从地图中删除密钥,修改它,然后重新插入。
但是你最好使用不可变类型作为你的地图的键,以避免在你的脚下开枪。