Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Sorting 如何对二维数组进行排序?_Sorting - Fatal编程技术网

Sorting 如何对二维数组进行排序?

Sorting 如何对二维数组进行排序?,sorting,Sorting,我有一个关于分类的问题 int[][] array = {{4,2},{1,7},{4,5},{1,2},{1,1},{4,1}}; 对该数组进行排序后,它将如下所示 int[][] array = {{1,1},{1,2},{1,7},{4,1},{4,2},{4,5}}; 我对此感到困惑,如果我首先对行执行排序,然后对列执行排序,那么在对行和列进行排序时,如何在同一时间更改其中两个值。参见此示例 Sort a two dimensional array based on

我有一个关于分类的问题

    int[][] array = {{4,2},{1,7},{4,5},{1,2},{1,1},{4,1}};
对该数组进行排序后,它将如下所示

    int[][] array = {{1,1},{1,2},{1,7},{4,1},{4,2},{4,5}};
我对此感到困惑,如果我首先对行执行排序,然后对列执行排序,那么在对行和列进行排序时,如何在同一时间更改其中两个值。

参见此示例

Sort a two dimensional array based on one column
The first column is a date of format "yyyy.MM.dd HH:mm" and the second column is a String.
既然你说的是二维数组,我假设“格式化日期…”是指字符串。下面是对字符串[]的二维数组进行排序的代码:

导入java.util.array; 导入java.util.Comparator

public class Asdf {

public static void main(final String[] args) {
    final String[][] data = new String[][] {
            new String[] { "2009.07.25 20:24", "Message A" },
            new String[] { "2009.07.25 20:17", "Message G" },
            new String[] { "2009.07.25 20:25", "Message B" },
            new String[] { "2009.07.25 20:30", "Message D" },
            new String[] { "2009.07.25 20:01", "Message F" },
            new String[] { "2009.07.25 21:08", "Message E" },
            new String[] { "2009.07.25 19:54", "Message R" } };

    Arrays.sort(data, new Comparator<String[]>() {
        @Override
        public int compare(final String[] entry1, final String[] entry2) {
            final String time1 = entry1[0];
            final String time2 = entry2[0];
            return time1.compareTo(time2);
        }
    });

    for (final String[] s : data) {
        System.out.println(s[0] + " " + s[1]);
    }
}
公共类Asdf{
公共静态void main(最终字符串[]args){
最终字符串[][]数据=新字符串[][]{
新字符串[]{“2009.07.25 20:24”,“消息A”},
新字符串[]{“2009.07.25 20:17”,“消息G”},
新字符串[]{“2009.07.25 20:25”,“消息B”},
新字符串[]{“2009.07.25 20:30”,“消息D”},
新字符串[]{“2009.07.25 20:01”,“消息F”},
新字符串[]{“2009.07.25 21:08”,“消息E”},
新字符串[]{“2009.07.25 19:54”,“Message R”};
sort(数据,新的比较器(){
@凌驾
公共整数比较(最终字符串[]entry1,最终字符串[]entry2){
最终字符串time1=entry1[0];
最终字符串time2=entry2[0];
返回时间1.比较(时间2);
}
});
for(最终字符串[]s:数据){
System.out.println(s[0]+“”+s[1]);
}
}

}

对不起,当我运行这个程序时,它显示“Comparator无法解析为类型”和“Array无法解析”。这里怎么了?你需要做。。。导入java.util.array;导入java.util.Comparator;非常感谢你。虽然我仍然不明白它是如何工作的,但它实际上可以解决我的问题@如果你不明白它是如何工作的,你就什么也学不到。从长远来看,有正确答案但不学习对你没有帮助。