繁体   English   中英

用Java对ArrayList排序

[英]Sorting ArrayList in Java

我有一个由以下类组成的类(实现Comparable):

double[1][2];

我将对我的arrayList进行排序,并以此方式进行尝试,但是我报告了一个错误:

public double compareTo(Matrix another) {
return this.getCell(0,1).compareTo(another.getCel(0,1));
} 

如何以这种方式分类?

大概,对getCell()的调用返回一个double ,它没有方法(例如( compareTo() )。

同样, Compareae接口的compareTo()方法必须返回int ,而不是double

尝试这个:

public int compareTo(Matrix another) {
    double diff = getCell(0,1) - another.getCel(0,1);
    return diff == 0 ? 0 : diff > 0 ? 1 : -1;
}

该解决方案可在所有Java版本中使用。 对于Java 7+,您可以这样做:

public int compareTo(Matrix another) {
    return Double.compare(getCell(0, 1), another.getCell(0, 1));
} 

另请注意,将多余的内容进行了轻微的清理this. 从您的代码。

您的问题不是很清楚,这将有助于发布SSCCE 但是由于getCell返回double ,所以您的方法可能看起来像这样:

public int compareTo(Matrix another) {
    return Double.valueOf(this.getCell(0, 1))
            .compareTo(Double.valueOf(another.getCell(0, 1)));
} 

这种工作方式是将每个比较的double原语包装在Double对象中。 由于Double实现Comparable<Double> ,因此您的方法可以委托给Double.compareTo

另外,您可以使用静态实用程序方法Double.compare(double, double)

public int compareTo(Matrix another) {
    return Double.compare(this.getCell(0, 1), another.getCell(0, 1));
} 

这是更可取的,因为它更简洁,但是我想提到第一种解决方案,因为它涉及将原装箱到其对象副本,这通常通常对于利用类方法和在集合中使用原语是必需的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM