java - 使用抽象类时如何使用比较器?
问题描述
我尝试使用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 进行排序。您知道我还有什么其他方法可以比较这两个对象吗?谢谢!
解决方案
您只需要接受实现该Comparable
接口的类。
public class MyArrayList<E extends Comparable<E>> {
之后,您需要将compareTo
调用中的参数转换为E
,因为array
是Object
类型。
public boolean add(E element) {
int i = 0;
while (element.compareTo((E) array[i]) > 0) {
i++;
}
this.set(i, element);
return true;
}
推荐阅读
- php - 通过 AJAX 单击链接时使用 $wpdb 插入行
- excel - 使用可变文件名导入
- android - 选择订单日期和交货日期后如何关注 textInputLayout
- windows - 现代系统上跨多个显示器的 Windows GDI BitBlt / MaskBlt:不同设备上是否存在 DC?
- java - 为什么在迭代期间从 ArrayList 中删除元素时我没有收到 ConcurrentModificationException
- glfw - GLFW | 什么是框架?
- python - 列出熊猫数据框 - Python
- php - PHP - 无法访问数组,因为“février”与“février”不同
- servicestack - ServiceStack中是否有可能有两个BaseURL WebHostUrl?
- shell - 如何使用 shell 脚本从 url 中删除主机详细信息