Java:字符串对象矩阵

标签 java string sorting matrix

我有一个名为“Worker”的对象矩阵,每个“Worker”中都有一个名为“fullname”的 String 类型变量(名称不带空格,例如:SarahSmith)。 我需要按名称按字母顺序降序对矩阵的每一列进行排序。 现在我使用此方法按字母顺序对每列进行排序:

    public static void secondChange(Worker[][] mat) {
    for (int m = 0; m < mat[0].length; m++) {
        for (int i = 0; i < mat[0].length; i++) {
            int minindex = i;
            for (int j = i + 1; j < mat[0].length; j++) {
                if (mat[j][m].getName().compareTo(mat[minindex][m].getName()) < 0)
                    minindex = j;   
            }
            Worker temp = mat[i][m];
            mat[i][m] = mat[minindex][m];
            mat[minindex][m] = temp;
        }
    }
}

然后我使用此方法对每列进行降序排序:

    public static void rightOrder(Worker[][] mat){
    for (int m=0 ; m<mat[0].length ; m++)
    for (int i=0, j=(mat[0].length-1) ; i<(mat[0].length/2) || j>(mat[0].length/2) ; i++,j--){
        Worker temp = mat[i][m];
        mat[i][m] = mat[j][m];
        mat[j][m] = temp;
    }
}

在第二种方法之后,矩阵将恢复到原来的形式,而不是按照我预期的方式工作(第一种方法工作正常)。 有人可以帮忙吗? :)

最佳答案

这并不能直接回答您的问题,但您可以通过为每列创建 List 包装器来使用 Java 标准且更高效的矩阵排序:

public static void sortColumnsDescending(Worker[][] matrix) {
    for (int i = 0; i < matrix[0].length; i++) {
        final int column = i;
        new AbstractList<Worker>() {
            @Override
            public int size() {
                return matrix.length;
            }

            @Override
            public Worker get(int row) {
                return matrix[row][column];
            }

            @Override
            public Worker set(int row, Worker element) {
                Worker prev = matrix[row][column];
                matrix[row][column] = element;
                return prev;
            }
        }.sort(Comparator.comparing(Worker::getName).reversed());
    }
}

关于Java:字符串对象矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39221511/

相关文章:

java - 没有小数位的纯数字值的正则表达式

c - Trouble\0 null 终止字符串 (C)

javascript - 如何按 javascript 中的最后一个数字字符对文本数组进行排序

java - 在 O(n) 时间内查找排序链表中的重复项

java - hibernate + Spring 启动2 : Not checking the default schema

java - 将 Excel 公式的文件名括起来

python - 将字符串文本文件(不是精确的字典格式)转换为具有元组键和浮点值的字典?

java - 如何使用 If 语句对数字进行排序 (Java)

php - 代表四个条件对 Laravel 集合进行排序

java - 您如何在对象类中实现枚举 - Java?