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

Java不会对抽象类的数组列表进行排序

全彬
2023-03-14

我有个问题。我编写了一个简单的抽象类,尝试对该类的数组列表进行排序,并为compareTo函数but list实现了Comparator接口。sort给出了一个错误。请帮忙。下面是一个代码:

public abstract class Antena implements Comparator<Antena>{
    private double x, y;

    public Antena(double x, double y) {
        this.x = x;
        this.y = y;
    }

    public double getX() {
        return x;
    }

    public double getY() {
        return y;
    }

    @Override
    public int compare(Antena o1, Antena o2) {
        return (int)(o1.getX()-o2.getX());
    }
}

在主要课程中,我有:

List<Antena> anteneObj=new ArrayList<>();
anteneObj.add(.....);
....
....
Collections.sort(anteneObj);

这给我一个错误,不会排序列表。什么是问题?我应该在扩展类中扩展或实现一些东西吗?当然,我有2类扩展抽象天线类。

共有2个答案

宋志学
2023-03-14

方法返回-1或0或1。您的实现可能会返回错误的值。实现可比并返回Double.compare(双,双)

阎功
2023-03-14

引用自系列。排序(列表)

根据指定列表元素的自然顺序,将其按升序排序。列表中的所有元素都必须实现可比接口。

因此,为了按C排序ollections.sort(List

public abstract class Antena implements Comparable<Antena> {

    ....

    @Override
    public int compareTo(Antena o) {
        return Double.compare(this.getX(), o.getX());
    }
}

 类似资料:
  • 但我得到一条错误消息,说无法在原语类型int上调用compareToIgnoreCase(int) 我如何修复这段代码,使它能够用整数值对列表进行排序?

  • 为了简单起见,我试图组合两个不同对象的列表,我将它们称为和,最后根据它们的日期值对组合列表进行排序。我已经在这里看到了大部分的答案,但它们并没有展示如何正确实现这样的用例的全貌。 我还实现了一个自定义类,它处理两个给定列表的合并和排序。我们将其称为。使用下面实现的方法。 这就是问题所在,因为我在上得到一个错误,“reason:没有变量类型的实例存在,所以对象符合接口”

  • 我有一个过程对象列表,如下所示 我的程序课就像 我想基于以下条件对对象进行排序和分组。 应根据过程名称对所有过程进行分组。 过程必须按过程日期降序排列。[日期列表中的第一个元素,即 分组在一起的相同过程应按日期降序排列。 最终结果必须是, 我能够使用比较器和旧的Java代码实现这一点。是否可以使用java8流、收集器和分组来实现相同的功能?

  • 问题内容: 我有一个浮点数组和一个字符串数组。每个浮点值都与特定的String匹配。我想使用以下方式对保留自己的字符串的float数组进行排序: 这是代码: 如何排序并保留自己的字符串? 非常感谢。 问题答案:

  • 问题内容: 我想对整数的arraylist的arraylist进行排序,需要帮助吗? 我被告知,我需要实现比较器或可比对象,然后使用collection.sort对列表列表进行排序… 问题答案: 没有错误检查空列表,但是这里是。 使用Java 8,它变得更加简洁:

  • 我是Java和Stack Overflow的新手,我有一个关于排列的问题。 方法:我使用中的对象生成。每个的大小从(可能最小为1)到,并包含具有唯一名称属性的自定义生成对象。 问题:现在我的问题是如何在我的外部(y轴)中获得从第一个到最后一个的所有可能对象组合的排列(我想我们可以说这是x轴)? 我试着举一个简单的例子: : 1.1|1.2|1.3 : 2.1 : 3.1|3.2 这里,这些位于外部