Sustitución de valores para una clave particular en el mapa de árbol cambia los valores para cada clave

Chhaganlaal:

Por alguna razón, cuando cambio el valor de una clave particular en mi árbol-mapear cada tecla cambia de valor, por alguna razón. He aquí el fragmento de código,

ArrayList<Integer> bitor = new ArrayList<>();
TreeMap<Integer, ArrayList> a = new TreeMap<>();
for(int i=0; i<4; i++)
    bitor.add(0);
for(int i=0; i<n; i++)
{
    a.put(i, bitor);
}
System.out.println(a);
for(int i=0; i<n; i++)
{
    x = i;
    for(int j=0; j<n; j++)
    {
        if(x!=j)
        {
            y = j;
            for(int k=0; k<n; k++)
            {
                if(x!=k && y!=k)
                {
                    z = k;
                    System.out.println(a);
                    bitor = a.get(x);
                    if(bitor.get(0)==3)
                        break;
                    System.out.println(1+" "+x+" "+y+" "+z);
                    System.out.flush();
                    bitor.set(0, bitor.get(0)+1);
                    ans = sc.nextInt();
                    if(ans==-1)
                        System.exit(ans);
                    bitor.set(bitor.get(0), ans);
                    a.replace(x, bitor);
                }
                if(bitor.get(0)==3)
                    break;
            }
        }
    }
}

imagen de salida

Sólo el valor de la clave ArrayList = 0 se supone que el cambio pero cada valor clave se cambió.

Esto es un poco raro y estoy adivinando que estoy haciendo un error tonto.

Louis Wasserman:
for(int i=0; i<n; i++)
{
    a.put(i, bitor);
}

Esto no hace lo que usted cree. Cada tecla señala en el mismo valor. Usted debe crear una nueva bitor, de forma explícita, para cada uno i.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=223676&siteId=1
Recomendado
Clasificación