7
votes

Comment changer de lignes vers des colonnes dans ArrayList

Comment changer de lignes en colonnes dans ArrayList ? Par exemple: xxx

Il devrait être: xxx

si c'est impossible avec arraylist, quelles sont les autres options pour stocker des données 2D et changer les lignes en colonnes?


1 commentaires

Pourquoi ne pas utiliser un entier bidimensionnel [] []?


5 Réponses :


0
votes

Vous pouvez essayer mappe .

Comme, xxx

pour obtenir le tri, xxx


1 commentaires

@Bohemian pour préserver la commande Vous pouvez utiliser LinkedHashMap IPM.



9
votes

Quelque chose de mal avec int [] [] ? Ce serait l'approche standard: xxx

sortie: xxx



Si vous devez utiliser utiliser des collections, utilisez comme démarrage: xxx


0 commentaires

2
votes

Vous pouvez utiliser deux boucles - quelque chose comme ça devrait fonctionner:

ArrayList<Integer[]> res = ArrayList<Integer[]>();
int C = arr.get(0).length;
int R = arr.size();
for (int c = 0 ; c != C ; c++) {
    int[] row = new Integer[R];
    for (int r = 0 ; r != R ; r++) {
        row[r] = arr.get(R)[c];
    }
    res.add(row);
}


0 commentaires

1
votes
ArrayList<Integer[]> arr = new ArrayList<Integer[]>();
    arr.add(new Integer[]{1,2,3});
    arr.add(new Integer[]{4,5,6});

    ArrayList<Integer[]> res = new ArrayList<Integer[]>();

    int C = arr.get(0).length;
    int R = arr.size();
    for (int c = 0 ; c != C ; c++) {
        Integer[] row = new Integer[R];
        for (int r = 0 ; r < R ; r++) {
            row[r] = arr.get(r)[c];
        }
        res.add(row);
    }

0 commentaires

3
votes

Ce problème s'appelle ' Matrix transpose '. Si vous connaissez le nombre de rangées à l'avance, vous pouvez simplement utiliser la matrice 2D et simplement le transposer, comme ci-dessous: xxx

même si vous ne connaissez pas le nombre de lignes ou de colonnes à l'avance, Vous pouvez utiliser d'autres données de données comme ArrayList, puis utiliser la même logique que ci-dessus.


0 commentaires