【发布时间】:2012-08-29 15:16:19
【问题描述】:
有没有像 LinkedHashMap 一样工作的 java 集合,但也反映了 equals 和 hashCode 中的顺序? -> 两个元素相同但顺序不同的 Map 不应该相等,应该有不同的 hashCode。
解决方案基于 Peter Lawrey 的回答(xAxis 是 LinkedHashMap):
哈希码:
...
result = prime * result + ((xAxis == null) ? 0 : xAxis.hashCode() + xAxis.toString().hashCode());
...
等于:
...
if (xAxis == null) {
if (other.xAxis != null) {
return false;
}
} else if (!xAxis.equals(other.xAxis)) {
return false;
} else if (!xAxis.toString().equals(other.xAxis.toString())) {
return false;
}
...
(基于eclipse生成的代码)
【问题讨论】:
-
不。仅当您在类中为“订单”创建字段时
-
你试过guava.Maps.difference(left,right)吗?
-
似乎 guava.Maps.difference(left, right) 对顺序不敏感?!
标签: java collections