Java排序集合

Java排序集合,java,Java,有人知道在我更新某个键属性的情况下,是否可以对树映射进行排序 假设我的密钥按属性“a”排序,而b用于equals(): 类键实现可比较的{ INTA; int b; //与之相比,这里等于end hashcode } 添加键/值对时,它们将在树映射中排序,但是如果我更新其中一个键(属性a),如何确保树映射将保持它们的排序?唯一安全的方法是删除该项,进行更改并重新添加它。修改数据项中的键或哈希代码会使一致性的基本契约失效。如果您依赖于值语义,则不会。如果映射的键发生了变化,则通常会发生异常。(T

有人知道在我更新某个键属性的情况下,是否可以对树映射进行排序

假设我的密钥按属性“a”排序,而b用于equals():

类键实现可比较的{
INTA;
int b;
//与之相比,这里等于end hashcode
}

添加键/值对时,它们将在树映射中排序,但是如果我更新其中一个键(属性a),如何确保树映射将保持它们的排序?

唯一安全的方法是删除该项,进行更改并重新添加它。修改数据项中的键或哈希代码会使一致性的基本契约失效。

如果您依赖于值语义,则不会。如果映射的键发生了变化,则通常会发生异常。(
TreeMap
通常会以无序结束,这可能会混淆键查找…并且如果
hashCode()
在键是键时没有返回一致的值,
HashMap
可能会中断。)任何用作键的对象都应该是不可变的,或者至少不能修改


如果要更新密钥,最好删除映射,并在值已更改的情况下将其重新插入新密钥下。

唯一安全的方法是删除该项,进行更改并重新添加它。修改数据项中的键或哈希代码会使一致性的基本契约失效。@如果您有一个很好的评论-请添加一个答案:)@user8035311 done,按要求:)“排序”一列并检查另一列的相等性可能是一个大问题,因为TreeMap和HashMap将显示不同的行为。
class Key implements Comparable<Key> {
   int a;
   int b;
   // compareTo, equals end hashcode here
}