23得票4回答
比较一致等于什么意思?如果我的类不遵循这个原则会发生什么?

来自TreeMap的JavaDoc: 请注意,排序映射(无论是否提供显式比较器)所维护的顺序必须与相等性保持一致,如果此排序映射要正确实现Map接口。 (有关与equals一致的精确定义,请参见Comparable或Comparator。)这是因为Map接口是根据equals操作定义的...

22得票4回答
如何根据ArrayList对象属性值获取最小/最大值?

我想要做的是从 ArrayList<Object> 中获取对象的最小/最大属性值。例如,如果Object包含属性weight(float),我想要列表中最重的物体。 我尝试实现Comparable来获取最大/最小值,但出于某种原因它返回相同的最小和最大值。(我不知道它是否适用于浮...

21得票6回答
创建一个实现Comparable接口的泛型类的compareTo方法

我有一个带有两个类型变量的通用类,实现了java.lang.Comparable接口。 public class DoubleKey<K,J> implements Comparable<DoubleKey<K,J>>{ private K k...

21得票4回答
Java排序:按属性对对象数组进行排序,不允许使用Comparable。

我有一个类Library,其中包含一个Book对象的数组,并且我需要根据Book的属性(标题或页码)对数组进行排序。问题是我不允许使用Comparable类与Book一起使用。您会建议我如何对Library中的书籍数组进行排序?编写自己的排序算法?或者有更简单的方法吗?如果您需要代码片段,请告诉我!

21得票2回答
为什么Arrays.sort方法接收的是Object[]而不是Comparable[]?

我想知道为什么Arrays类的sort方法要求一个类型为Object[]的参数,而不是Comparable[]类型的参数。如果你不传递Comparable[]类型的参数,它会生成ClassCastException异常。 为什么要使用public static void sort(Objec...

20得票3回答
创建一个HashSet的示例,以便进行排序?

我需要一个示例,演示如何在 HashSet 上使用可比较类来获得升序。假设我有一个像下面这样的 HashSet:HashSet<String> hs = new HashSet<String>(); 如何使hs按升序排列?

18得票5回答
如何在Java中实现一个通用的`max(Comparable a, Comparable b)`函数?

我正在尝试编写一个通用的最大值函数,该函数接受两个Comparable参数。 到目前为止,我的代码如下: public static <T extends Comparable<?>> T max(T a, T b) { if (a == null) { ...

18得票7回答
如何实现Comparable接口以使其与身份相等(identity-equality)一致

我有一个类,其中等式(根据equals())的定义必须由对象标识定义,即this == other。 我想要实现Comparable以对这些对象进行排序(例如按某个getName()属性)。为了与equals()一致,compareTo()不能返回0,即使两个对象有相同的名称。 是否有一种...

18得票1回答
比较后再比较会导致编译错误。

我正在尝试使用Java8的Comparator按名称和年龄排序员工列表,我创建了下面的Comparator但是它给了我编译器错误。 类型不匹配:无法从Comparator<Object>转换为<unknown> Comparator<String&...

17得票2回答
Comparable是否应该与另一种类型进行比较?

我想知道以下情况是否有合理的使用场景: class Base {} class A implements Comparable<Base> { //... } 似乎有一个常见的模式(请参阅集合以获取许多示例),接受类型为T的集合,其中T extends Compar...