【发布时间】:2018-06-20 05:46:55
【问题描述】:
有谁知道在我更新我的一个键属性的情况下是否可以保持 TreeMap 排序?
假设我的键按属性“a”排序,而 b 用于 equals():
class Key implements Comparable<Key> {
int a;
int b;
// compareTo, equals end hashcode here
}
当添加键/值对时,它们将在 TreeMap 中排序,但是如果我更新其中一个键(属性 a),如何确保 TreeMap 将它们保持排序?
【问题讨论】:
-
唯一安全的方法是删除该项目,进行更改并重新添加它。修改数据项中的键或哈希码会使基本的一致性合约失效。
-
@Dragonthoughts 你有一个很好的评论 - 请添加一个答案:)
-
@user8035311 完成,按要求完成 :)
-
按一列“排序”并按另一列检查相等性可能是一个大问题,因为 TreeMap 和 HashMap 会表现出不同的行为。
标签: java