Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中对未知维数数组的第一列进行排序_Java_Arrays - Fatal编程技术网

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

在java中对未知维数数组的第一列进行排序,java,arrays,Java,Arrays,让我们假设我想要一个函数,在这个函数中,我将使用Comparator对任何数组的第一列进行排序。我想将多维数组传递到该函数中,但是,每次该维度的数量都可能不同。我在考虑使用泛型类型函数,但是这种方法似乎不起作用。怎么做 更新: 我曾想过写这样的代码,但这甚至不能编译,我也不确定我还能怎么做。我必须补充一点,我只考虑字符串数组 public <T> T sortArray(T array){ Arrays.sort(array, new Comparator<T

让我们假设我想要一个函数,在这个函数中,我将使用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;
    }
公共T数组(T数组){
sort(数组,新的比较器(){
@凌驾
公共整数比较(左、右){
最终字符串str1=lhs[0];
最终字符串str2=rhs[0];
返回str1.compareTo(str2);
}
});
返回数组;
}

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

public Object[]]sortArray(Object[]]array){
Object[]columnElements=新对象[array.length];
for(int i=0;i
如果希望它适用于泛型,则可能需要更改此选项,但以下代码一般适用于对象(但将compare方法中的强制转换更改为您传入的任何类型)

public Object[]]sortArray(Object[]]array){
Object[]columnElements=新对象[array.length];
for(int i=0;i
java中的数组长度总是已知的。可以使用
length
属性获取数组的长度。因此,您总是知道尺寸;)三维或四维数组中的第一列是什么?我认为柱的概念只在2维中起作用。如果显示当前代码,事情可能会变得更清楚。@ThomasD。第二个、第三个、第四个。。。。。维度在多维数组中是可选的。@是的,你说得对。正如他所说,我假设他总是想按“第一列”下单。我的意思是,你总是有“第一列”的长度。我没有考虑其他维度。到目前为止你试过什么?请为我们提供您尝试过的其他事情的代码示例,这是一个低质量的问题,因为您基本上要求我们为您完成工作。java中的数组长度总是已知的。可以使用
length
属性获取数组的长度。因此,您总是知道尺寸;)三维或四维数组中的第一列是什么?我认为柱的概念只在2维中起作用。如果显示当前代码,事情可能会变得更清楚。@ThomasD。第二个、第三个、第四个。。。。。维度在多维数组中是可选的。@是的,你说得对。正如他所说,我假设他总是想按“第一列”下单。我的意思是,你总是有“第一列”的长度。我没有考虑其他维度。到目前为止你试过什么?请为我们提供您尝试过的其他事情的代码示例,这是一个低质量的问题,因为您基本上要求我们为您完成工作。
    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;
    }