[英]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.