java - 使用抽象类时如何使用比较器?

标签 java arrays sorting abstract-class comparable

我尝试使用 compareTo 并实现 Comparable 接口(interface),但我找不到一种方法来比较两个对象,以便它返回一个整数(-1,如果第一个对象小于第二个对象,如果它们相等则为 0,如果对象 1 大于对象 2,则为 1)。 这是我尝试过的:

public class MyArrayList<E> {

private Object[] array;
private int size;
private int capacity;

public MyArrayList() {
    this.capacity = 1000;
    this.array = new Object[capacity];
    this.size = 0;
}

public boolean add(E element) {
int i = 0;
while(element.compareTo(array[i]) > 0) {
    i++;
    }
this.set(i, element);
return true;
  }
}

我基本上是在尝试使用可比较的对象对 MyArrayList 进行排序。您知道我还可以通过哪些其他方式来比较这两个对象吗? 谢谢!

最佳答案

您只需接受实现 Comparable 接口(interface)的类。

public class MyArrayList<E extends Comparable<E>> {

之后,您需要将 compareTo 调用中的参数转换为 E,因为 array 的类型为 对象类型。

public boolean add(E element) {
    int i = 0;
    while (element.compareTo((E) array[i]) > 0) {
        i++;
    }
    this.set(i, element);
    return true;
}

关于java - 使用抽象类时如何使用比较器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60588832/

相关文章:

c++ - 计算每秒添加到队列的请求数 - 总是返回零

sorting - RichFaces 扩展表数据模型 : sorting columns retrieves all rows

Java For 循环同时多个列表

java - MATLAB Engine API for Java 的问题

java - 查找 Miracast 与 Android 的连接

c - C 中的输入字符串数组内存管理

java - 数组和输入

javascript - 如何在javascript中对最近日期的对象数组进行排序

C数据库设计,可按多字段排序

java - 如何配置 GraphQL SPQR 以使用 Gson 而不是 Jackson