如何使用Array.sort在JTextArea java中以降序和升序形式显示矩阵?

问题描述

我需要按降序和升序对矩阵进行排序,但将其打印为一维数组。

目前它按升序排序,但只有最后一行,我不知道如何显示所有行,也不知道如何按降序排序。

 public void mostrarMatriz (int matriz[][],int n){
        
        DefaultTableModel model = (DefaultTableModel) tablaMatriz.getModel();
        model.setRowCount(n);
        model.setColumnCount(n);
       
        for(int i = 0; i < n ; i++){
            for(int j = 0; j < n; j++){
                tablaMatriz.setValueAt(matriz[i][j],i,j);
            } 
        }
        for(int[] i: matriz){   
            Arrays.sort(i);
            txtMenor.setText(Arrays.toString(i));
        }   
    }
}

解决方法

文本中只显示矩阵的最后一行的原因是因为在每次迭代时都会被覆盖,例如:

const pickSomething = <K extends keyof ClassMap>(key: K): ClassMap[K] => {
    return {
        get a() { return new A() },get b() { return new B() }
    }[key];
}

要按降序显示每一行,您必须在将每个数组附加到文本之前以相反的顺序对每个数组进行排序。您可以使用流:

// text is being set/overwritten in each iteration of this loop
for(int[] i : matriz) {
    Arrays.sort(i);
    txtMenor.setText(Arrays.toString(i));
}

// You can use append instead
String text = "";
for(int[] i : matriz) {
    Arrays.sort(i);
    text += Arrays.toString(i) + " ";
}
txtMenor.setText(text);
,

循环应该附加文本,而不是在每次迭代时重置它:

String text="";
for(int[] i: matriz)
{   
   Arrays.sort(i);
   text+=Arrays.toString(i)+" ";
}
if (!text.isEmpty())
    txtMenor.setText(text.subString(0,text.length()-1));

相反的顺序,只需将其翻转

Collections.reverse(Arrays.asList(matriz)); 
txtX.setText(Arrays.deepToString(matriz));