java - 需要帮助对数组的数组列表进行排序

标签 java list sorting arraylist

我有一个包含 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/

相关文章:

java - 为什么我在创建 map 时会收到 IllegalArgumentException?

java - 为什么 DataOutputStream 的 writeByte() 和 ObjectOutputStream 的 writeByte() 写入的字节不一样?

python - 如何用其他数字替换列表元素的索引?

ios - 使用对象对 NSArray 进行排序

java - 迭代数组 List 并在值不同时创建新的 ArrayList,这可能吗?

java - Spring 数据mongodb : How to define cursor limit in findAll method

java - Guava 中 Supplier<T> 的倒数

r - 将列表转换为数据框

python - Python 列表可以有多大?

Javascript:排序对象