当前位置: 首页 > 知识库问答 >
问题:

实现比较器接口[复制]

赖淇
2023-03-14

我想制作一个实现比较器接口的比较器类。在类中,我想根据它们的ID比较我的2个员工对象。到目前为止,我制作的员工类是:

import java.util.ArrayList;


public class Employee {
public int ID_Number;
public String Full_Name;
public double Salary;
static ArrayList<Object> employ = new ArrayList<Object>();


Employee(int id, String name, double sal){
    ID_Number = id;
    Full_Name = name;
    Salary  = sal;
}

}

我完全被困住了,不知道该怎么办。有人能帮忙吗?

共有1个答案

阴波峻
2023-03-14

下面是我的小项目DBvolution中的一个比较器内部类:

private static class ClassNameComparator implements Comparator<Class<?>>, Serializable {

    private static final long serialVersionUID = 1L;

    ClassNameComparator() {
    }

    @Override
    public int compare(Class<?> first, Class<?> second) {
        String firstCanonicalName = first.getCanonicalName();
        String secondCanonicalName = second.getCanonicalName();
        if (firstCanonicalName != null && secondCanonicalName != null) {
            return firstCanonicalName.compareTo(secondCanonicalName);
        } else {
            return first.getSimpleName().compareTo(second.getSimpleName());
        }
    }
}

这看起来可能很复杂,但实际上很简单。基本原则如下:

class ClassNameComparator implements Comparator<YourClass> {

ClassNameComparator() {
}

@Override
public int compare(YourClass first, YourClass second) {
    if (first > second){
        return 1;
    } else if (first == second){
        return 0;
    } else return -1;
}
}

您需要用类替换类,并将测试更改为更适合您的对象的测试。最后记住检查空值。

 类似资料:
  • 我是java新手,试图理解一些概念。这是一段我不懂的代码。 我知道这是怎么回事,但不明白为什么这是允许的。因此,我的问题是: 从java文档中,比较器[T]是一个接口。比较器[水果]怎么样?我将假设它是一个类,因为它必须覆盖比较函数。 为什么可以在{}中使用非参数构造函数和类定义来初始化FruitName比较器?我在比较器[T]的javadoc中没有找到这样的构造函数声明。 如有任何意见,将不胜感

  • 当我在浏览上面的接口时,在阅读了许多相同主题的站点后,我对这些接口的语法不是很清楚。 请考虑以下代码段: 如果每个查询都是可理解的。

  • 我在理解和使用比较器方面有一个问题,有人问我以下问题: 我在一个单独的Employee类中使用compareTo比较器接口来调用比较器对象的重载使用。 任何帮助,建议,代码行将非常感谢!!

  • 我有一个关于比较器接口的问题。在我的类下面实现了按长度而不是按字符值排序的默认排序的接口。 覆盖默认比较后,我使用对我的字符串数组进行排序。即使我覆盖了默认方法,如果我使用Arrays.sort,它会调用默认比较而不是我覆盖的方法。这是因为我显式调用了超类方法吗? 另一个问题是初始化接口本身。我知道您不能初始化接口,而是初始化一个类对象(实现所述接口)来引用接口可用的方法。在这种情况下,当我初始化

  • 为什么在实现Comparator接口时不需要重写equals()方法?comparator中的equals()既不是静态的,也不是默认的。 在同一行中,我还想问,当Comparator有两个抽象方法compare()和equals()时,它是如何作为一个函数接口的?

  • 我正在尝试编写一个使用最小优先级队列的算法,所以我在谷歌上四处查看并找到了PriorityQueue。不过,似乎为了使用它,我需要告诉它我希望它如何排列优先级,并且这样做的方法是使用比较器(我想比较我的“Node1”对象的特定数据字段)。更多的谷歌搜索提出了创建一个新的比较器的想法,它实现了比较器但覆盖了比较方法。我正在尝试的是这样(以及它的其他变体): 编译器有几个理由提出抗议,其中之一是我没有