La adición de enteros arraylist para arraylist en android

Necesito hacer un 2D arraylist como

[[1,2,3],[2,3,4],[3,4,5]]

Pero mediante el código de abajo, yo estoy haciendo solo

[[3,4,5],[3,4,5],[3,4,5]]

La última matriz simplemente se repite una y otra vez.
Mientras que atravesar el problema, he encontrado que en la primera pasada es como

[[1,2,3]

2do paso:

[[2,3,4],[2,3,4]]

3er paso:

[[3,4,5],[3,4,5],[3,4,5]].

Por favor ayuda, como yo m quedé con ella.

ArrayList<ArrayList<Integer>> combiarray = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> innerarray = new ArrayList<Integer>();

combiarray.clear();

for(k=1;k<(row*column);k=k+column)
{
    for(j=k;;j++)
        {
            innerarray.clear();
            for(i=0;i<wincount;i++)
            {
                innerarray.add(j+i);
            }

            combiarray.add(innerarray);
            Toast.makeText(context,String.valueOf(combiarray),
                                 Toast.LENGTH_SHORT).show();
            i--;
            if((j+i)%column==0)
            {
                break;
            }
        }
    }
InformationsquelleAutor user3337408 | 2014-02-21

3 Kommentare

  1. 1

    El problema es que siempre estás añadiendo el mismo objeto arraylist a la lista y que acaba de modificar su contenido.
    Tienes que crear un nuevo objeto en cada iteración.

    Actualmente estamos haciendo algo como esto:

    La adición de enteros arraylist para arraylist en android

    Para reemplazar

    innerarray.clear();

    por

    innerarray = new ArrayList<Integer>();
  2. 1

    Clase ArrayList tiene un método llamado addAll que añade todo el contenido de una colección a su colección. Se puede utilizar para agregar a su final ArrayList el contenido de las otras listas.

    Si se desea generar las listas en el formato requerido, se puede utilizar:

     ArrayList<ArrayList<Integer>> combiArray = new ArrayList<ArrayList<Integer>>();
        int columns = 3;
        for (int i = 1; i <= columns; i++) {
            ArrayList<Integer> innerArray = new ArrayList<Integer>();
            for (int j = i; j < i + columns; j++) {
                innerArray.add(j);
            }
            combiArray.add(innerArray);
        }
    • Si quiere agregar un ArrayList<Integer> a la ArraysList<ArrayList<Integer>>, simplemente usa el método add ().
    • He utilizado el método add. Pero sobrescribe los valores antiguos en el arraylist.
    • Fue la adición de la misma ArrayList instancia a la combiarray, así que por supuesto que los valores se restablecerán a la última. Poner el innerArray en el bucle que hace que después de cada iteración, una nueva instancia es creada.
    • Gracias. Tengo la solución. 🙂
  3. 0

    trate de una vez…

    for(k=1;k<(row*column);k=k+column)
    {
    for(j=1;j<=k;j++)
        {
            innerarray.clear();
            for(i=0;i<wincount;i++)
            {
                innerarray.add(j+i);
            }
    
            combiarray.add(innerarray);
            Toast.makeText(context,String.valueOf(combiarray),Toast.LENGTH_SHORT).show();
            i--;
            if((j+i)%column==0)
            {
                break;
            }
    
        }
    }

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Recent Articles

Python «set» con duplicados/elementos repetidos

Hay una forma estándar de representar un "conjunto" que puede contener elementos duplicados. Como yo lo entiendo, un conjunto tiene exactamente un cero o...

Python: generador de expresión vs rendimiento

En Python, ¿hay alguna diferencia entre la creación de un generador de objetos a través de un generador de expresión versus el uso de...

Cómo exportar/importar la Masilla lista de sesiones?

Hay una manera de hacer esto? O tengo que tomar manualmente cada archivo de Registro? InformationsquelleAutor s.webbandit | 2012-10-23

no distingue mayúsculas de minúsculas coincidentes en xpath?

Por ejemplo, para el xml a continuación <CATALOG> <CD title="Empire Burlesque"/> <CD title="empire burlesque"/> <CD...