compareTo for Map <string,object =“”>

时间:2017-03-29 11:34:14

标签: java comparator

我有一个包含一组字段的类:

class T {
int timestamp;
String name;
}

使用自动生成的hashcode / equals / compareTo基于这些字段。 我需要添加另一个字段Map<String, Object> parameters 为它实现hashCode / equals并不困难,但我对compareTo有点困惑:

  1. 如果时间戳和名称相同,那么两个T类实例的顺序并不重要,但我希望它满足compareTo契约(例如,不仅仅是&#34;返回1&#34;)。
  2. 我希望它与equals同步,所以我不能在compareTo中跳过参数字段(在这种情况下,如果我们使用HashSet或TreeSet存储项目,它可能会有不同的结果)。
  3. 所以我不在乎两个第一个字段相等的顺序,但是想避免像2中提到的奇怪问题。
  4. 如果equals比较整个地图,我无法为此字段发明任何compareTo以满足这些要求。可能我可以使用equals和compareTo中的hashcode进行比较,但对我来说这看起来很奇怪。 这里有什么选择吗?

0 个答案:

没有答案