Ho creato due elenchi dallo stesso array e ne ho ordinato uno. Quando ho provato a cambiare una lista, anche l'altra lista è stata aggiornata.Creato due elenchi dallo stesso array, modificando un elenco, cambia l'altro
List<Integer> list = Arrays.asList(ar);
List<Integer> sorted = Arrays.asList(ar);
Collections.sort(sorted);
list.set(0,10000000); //changes sorted also
Mi ci è voluto un po 'di tempo, sotto il codice citato ha funzionato.
List<Integer> sorted = new ArrayList<Integer>(Arrays.asList(ar));
Voglio sapere perché il mio primo approccio non ha funzionato? Ho creato due elenchi separati, perché i cambiamenti si stanno verificando in entrambi. In che modo java assegna valori alle variabili qui?
'list' e' sorted' stanno puntando allo stesso array, vero? – Andrew
@AndrewTobilko: ma ha solo un elenco. Vado a votare questo come una domanda interessante. –
Sono un po 'sorpreso dal fatto che questa sembra essere la prima volta che viene posta questa domanda su SO dal momento che il "problema" è vecchio come lo stesso 'Arrays' api (java 1.2). E dubito che tutti abbiano letto (e capito) la javadoc fino ad ora ... –