在java中对未知维数的第一列进行排序

时间:2017-01-24 15:25:23

标签: java arrays

假设我想要一个函数,我将使用Comparator对任何数组的第一列进行排序。我想将多维度数组传递给该函数,但是,每次此维度的数量可以不同。我正在考虑使用泛型类型函数,但这种方法似乎不起作用。怎么做?

更新: 我正在考虑编写这样的代码,但这甚至都没有编译,我不太确定我还能做什么呢。我必须补充一点,我只考虑字符串数组。

public <T> T sortArray(T array){

        Arrays.sort(array, new Comparator<T>() {
            @Override
            public int compare(T lhs, T rhs) {
                final String str1 = lhs[0];
                final String str2 = rhs[0];
                return str1.compareTo(str2);
            }
        });

        return array;
    }

1 个答案:

答案 0 :(得分:0)

如果您希望它适用于泛型,您可能需要更改此项,但以下代码一般适用于对象(但更改比较方法中的转换以转换为您传入的任何类型)。

    public Object[][] sortArray(Object[][] array){

        Object[] columnElements = new Object[array.length];
        for (int i = 0; i < array.length; i++) {
            columnElements[i] = array[i][0];
        }

        Arrays.sort(columnElements, new Comparator<Object>() {
            @Override
            public int compare(Object o1, Object o2) {
                return ((String) o1).compareTo((String) o2);
            }
        });


        for (int i = 0; i < array.length; i++) {
            array[i][0] = columnElements[i];
        }

        return array;
    }
相关问题