我有一个包含 double 值数组的数组列表,我想对行进行排序,例如按字段中的第三个值。
有什么聪明的方法吗? (升序/降序)
声明:
private List<double[]> row = new ArrayList<double[]>();
示例:
- 10.0、5.0、200.3
- 9.1、1.4、3.3
- 1.1、7.6、3.4
按第二列 (asc) 排序
- 9.1、1.4、3.3
- 10.0、5.0、200.3
- 1.1、7.6、3.4
编辑!!
稍后我会尝试这个,但我没有时间测试它! mby有人可以验证这一点
if (sortDir == SortDirection.ASCENDING) {
Collections.sort(tabelle,new Comparator<double[]>() {
public int compare(double[] array1, double[] array2) {
return Double.compare(array1[colIds.indexOf(aColId)], array2[colIds.indexOf(aColId)]);
}
});
}
if (sortDir == SortDirection.DESCENDING) {
Collections.sort(tabelle,new Comparator<double[]>() {
public int compare(double[] array1, double[] array2) {
return Double.compare(array1[colIds.indexOf(aColId)], array2[colIds.indexOf(aColId)]);
}
});
Collections.reverse(tabelle);
}
哇这么多评论:D谢谢
最佳答案
在 Java 8 中:
public static void main(final String[] args) throws IOException {
final List<double[]> row = new ArrayList<double[]>();
row.add(new double[]{10.0, 5.0, 200.3});
row.add(new double[]{9.1, 1.4, 3.3});
row.add(new double[]{9.1, 1.4, 3.3});
final List<double[]> sorted = row.stream().
sorted((l, r) -> Double.compare(l[2], r[2])).
collect(Collectors.toList());
}
或者,如果您想就地排序:
row.sort((l, r) -> Double.compare(l[2], r[2]));
关于java - 需要帮助对数组的数组列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23595305/