【发布时间】:2012-03-31 01:33:53
【问题描述】:
我有一个包含 Id 和另一个字段的对象 (POJO) 的 ArrayList。我已经在 POJO 中为 Id 字段实现了 equals()/hashcode() 覆盖。当我使用 Object 类的 equals() 方法比较两个对象时,它工作得非常好。但是,当我将这些对象添加到数组列表并实现
Collections.sort(arrListOfObjects);
它给了我一个classCastexception。查了一下,发现需要实现一个Comparator。这个比较器也对等于/哈希码覆盖做了一些事情。如果是这样,那么为什么上面的代码不起作用?(我知道没有比较器,但我的问题是,不能根据对象的哈希码实现排序吗?)
【问题讨论】:
-
您肯定希望实现 Comparable 接口。
compareTo()方法实际上是确定某事物是“大于”还是“小于”另一事物。equals()方法只能判断某些东西是否“相等”,这对订购没有多大作用。
标签: java sorting collections arraylist hashcode