Modificar filas específicas de una lista multidimensional

¿Cuál es una forma de pasar por una ArrayList> bidimensional y para filas específicas restas una (pero no para todas, solo básicamente hay una verificación booleana T / F antes de esto, si el booleano es T, entonces haz esto) Todo lo que guardo llegar con es lo que esencialmente termina siendo infinito para bucles

El cambio debe realizarse solo para filas específicas de la lista ... es decir: (PARA que esto funcione, elig.get (0) es falso)

si tengo: [[1, 2, 3], [4, 5, 2], [2, 1, 1], [3, 6, 1], [1, 6, 3]] Me gustaría obtener (por ej.) en el

La primera y última fila deben ser -1, así que: [[1, 0, 1], [2, 4, 5], [2, 2, 1], [1, 3, 6], [1, 0, 5 ]]

y así sucesivamente

El código que tengo ahora es: (Lo aislé y realmente no tengo idea de por qué esto no funciona.

for(int j=0; j<(bigArr.size()); j++) {   

            for(int k=0; k<(bigArr.get(0).size()); k++) {   

                if(elig.get(0) == false) {  

                bigArr.get(j).set(k, ballotArr.get(j).get(k)-1);



            }

        }
System.out.println(ballotArr);     
}

preguntado el 01 de febrero de 12 a las 04:02

¿Es una lista de matrices? o lista de matrices de listas de matrices? -

¿Qué problema le está dando su código hasta ahora? -

2 Respuestas

Es como tener una ArrayList de ArrayList. Entonces, en lugar de referirse a un elemento específico en una matriz normal como arr [fila] [columna], sería arr.get (fila) .get (columna)

//loops through first dimension
for(int row=0;row<myList.size();row++) {
    //check that T/F you mentioned
    if(myBoolean) {
        //loop through second dimension
        for(int i=0;i<myList.get(row).size();i++) {
            //subtract 1 from everything in second dimension
            myList.get(row).set(i, myList.get(row).get(i)-1);
        }
    }
}

Respondido 17 Feb 12, 05:02

esto me da el mismo problema (usando mi ejemplo original), la nueva lista de matrices de listas de matrices es solo [[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]] - Gary Jones

Esto debería funcionar:

List<List<Integer>> nums = ...;

if (nums.size() >= 2) {
    subtractOneFromRow(nums, 0);
    subtractOneFromRow(nums, nums.size() - 1);
} else if (nums.size() == 1) {
    subtractOneFromRow(nums, 0);
}
// Do nothing if there are no rows

// ...

private static void subtractOneFromRow(List<List<Integer>> nums, int r) {
    List<Integer> row = nums.get(r);
    for (int c = 0; c < row.size(); c++) {
        row.set(c, row.get(c) - 1);
    }
}

Respondido 01 Feb 12, 08:02

Lo siento, soy muy nuevo en esto ... entonces nums = mi gran lista de matrices 2d yr = ¿solo para esto? Tampoco estoy siguiendo esto tan bien, si (nums.size ()> = 2 entonces todavía restar de las filas? El código que tengo en el que estoy editando, pero resta 1 del primer 'falso' y reemplaza todo bigArr con eso - Gary Jones

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.