有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

假设我想要一个函数,在这个函数中,我将使用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) 个答案

  1. # 1 楼答案

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

        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;
        }