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

收藏。sort()不起作用。实现可比接口的问题

诸葛乐逸
2023-03-14

有人知道为什么这段代码没有对员工进行正确的排序吗?我需要他们按照工资的多少按升序排序。

我想我把smth搞砸了,因为我把工资存进了双打。但我真的不知道该怎么办。Plz帮助。

public static void main(String[] args) {

    List<Employee> employees = new ArrayList<>(List.of(
            new Employee("Steve", 3.1),
            new Employee("Mark", 4.2),
            new Employee("Oliver", 4)));

    System.out.println("Before sorting: " + employees);
    employees.sort(Employee::compareTo);
    System.out.println("After sorting: " + employees);
}

class Employee implements Comparable<Employee> {
    private final String name;
    private final double salary;

    public Employee(String name, double salary) {
        this.name = name;
        this.salary = salary;
    }

    @Override
    public int compareTo(Employee employee) {
        return (int) this.salary - (int) employee.salary;
    }

    @Override
    public String toString() {
        return name + " " + Math.round(salary * 100.0) / 100.0; //2 digits after the dot
    }
}

输出:

这也不管用

共有1个答案

岳晟
2023-03-14

问题在于您的compare to功能。4.2和4.0都是4作为整数,所以你的程序不会交换它们。

你需要比较双打。我想,这个会帮助你的。

 类似资料:
  • 情况: 我正在尝试实现一个为项目分配权重的专用集合。 我无法使用

  • 问题内容: 我不确定如何在我的抽象类中实现类似的接口。我有以下示例代码可用来尝试解决这个问题: 我有一个测试类,该类将创建Animal类型的对象,但是我希望在该类中具有一个可比的接口,以使发现的年纪高于低位。我不知道如何去解决这个问题。 问题答案: 您只需要定义即p。然后,您必须以自己喜欢的方式实现该方法。 使用的实现,具有较高级别的动物将获得更高的顺序。我希望你的想法和这个例子。

  • 我不确定如何在我的抽象类中实现一个可比较的接口。我有下面的示例代码,我正在使用它来尝试和得到我的头脑周围: 我有一个测试类,它将创建动物类型的对象,但是我想在这个类中有一个类似的接口,这样更早的发现排名就会更高。不过,我不知道该怎么做。

  • 我有一个在dd的日期列表。MM。YYYY HH: mm格式存储为字符串当我试图对这些日期进行排序时,我得到了除00小时和12小时值之外的所有值 数组以15分钟的间隔出现,所以排序后我得到了类似的东西 下面是排序代码 请帮帮我,我该如何继续下去

  • 问题内容: 好的,我已经尝试了Stack上的所有解决方案,但没有任何效果。我当前的方法从MainActivity注册了“ SmsListener”接收器。我要做的就是初始化onReceive方法。没有错误;它根本不是在广播。我究竟做错了什么?在此处粘贴适用的代码。可能需要的其他任何东西都可以问。 更新:这是一个未解决的类似问题,当 我在Android6.0.1下测试我正在测试的GoogleHang