java - 在java中对二维数组进行排序

标签 java arrays sorting loops file-io

编辑:我尝试使用露营器,但它不起作用,我收到错误

我必须读取包含内容的文件

2011 Regular Season
Boston 162 5710 875 1600 352 35 203
NY_Yankees 162 5518 867 1452 267 33 222
Texas 162 5659 855 1599 310 32 210
Detroit 162 5563 787 1540 297 34 169
St.Louis 162 5532 762 1513 308 22 162
Toronto 162 5559 743 1384 285 34 186
Cincinnati 162 5612 735 1438 264 19 183
Colorado 162 5544 735 1429 274 40 163
Arizona 162 5421 731 1357 293 37 172
Kansas_City 162 5672 730 1560 325 41 129

这是我读取它的代码

static String specstat[][] = new String[1000][1000];

public static void main(String args[]) {

Arrays.sort(specstat, 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 : specstat) {
        System.out.println(s[0] + " " + s[0]);
    }


    execute();
}

public static String[][] execute() {
    int line = 0;
    try {
        BufferedReader in = new BufferedReader(new FileReader(
                "files/input.txt"));

        String str;
        while ((str = in.readLine()) != null) {
            if (str.trim().length() == 0) {
                continue; // Skip blank lines
            }
            specstat[line] = str.split("\\s+");
            line++;
        }
        in.close();
    } catch (IOException e) {
        System.out.println("Can not open or write to the file.");
    }
    return specstat;

}

如何根据文本文件中最后一列(或任何一列)数字的第一列对二维数组进行排序?

最佳答案

据我了解,您希望通过排列数组内部的位置来对二维数组进行排序。您可以将 Arrays.sort() 与自定义比较器一起使用,如下所示:

Arrays.sort(specstat, new Comparator<String[]>() {
    @Override
    public int compare(String[] array1, String[] array2) {
        //do your comparison here...
    }
});

使用String.compare()或使用Integer.parseInt(String s)比较数值可能会有所帮助。如果要对 2D 数组内的各个字符串数组进行排序,则必须对每个数组单独进行排序。

编辑:请参阅建议的比较方法的注释。

关于java - 在java中对二维数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16841748/

相关文章:

使用 %s 打印时,大小为 10 的字符数组显示 11 个字符

java - 检查一个数组中的所有字符串是否都存在于另一个数组中

c - 自定义排序函数的奇怪结果

使用 jar 运行时,Java 不遵循 -cp 选项的类路径规范

java - ActiveMQ 中 JMX 的默认端口是什么?

java - 如何将多个json网址的内容添加到单个json对象中

java - 支持 JPA 的企业应用程序的 Spring 和 Hibernate 对业务有何帮助?

c++ - 如何将二进制数据文件中的信息读入结构数组 C++

mysql - 如何通过其中一列快速重新排序 MySQL 表?

arrays - 多样化排序的算法