首页 > 解决方案 > 使用抽象类时如何使用比较器?

问题描述

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

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 进行排序。您知道我还有什么其他方法可以比较这两个对象吗?谢谢!

标签: javaarrayssortingabstract-classcomparable

解决方案


您只需要接受实现该Comparable接口的类。

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

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

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

推荐阅读