我正在使用一个TreeMap(SortedMap),其键为Object [],其元素类型各异。
TreeMap的equals()在Object []上不起作用,就像Arrays的equals()一样 - 这意味着当使用像containsKey()和get()这样的方法时它将不起作用,除非我解决它。
是否存在某种解决方案,不涉及创建一个全新的类?
编辑:
为了说清楚,我做了一个错误的假设。创建new Comparator(){}
也会影响使用相等性的每个方法,例如equals()
,而不仅仅是树分类器。
答案 0 :(得分:7)
是否有某种解决方案可以创建一个全新的类?
没有。事实上,你根本不应该为地图键使用可变值。
答案 1 :(得分:2)
虽然我同意Matt Ball您通常不应该使用可变(可更改)类型作为密钥,但只要您不打算使用TreeMap
,就可以使用Map
一旦数组在树中,就修改它们。
这个解决方案确实涉及创建一个类,但不是一个新的implements Comparator<Object[]>
类,这就是你所要求的。相反,您需要创建自己的类Arrays.equals()
,它可以比较数组。该类可以使用{{1}}方法来确定它们是否相等,但是当数组不相等时,还需要一个一致的规则来确定哪个数组在另一个数组之前。