Archiwum

Posty oznaczone ‘Lists’

Arrays to Lists in Java

sierpień 3rd, 2010 Tomasz Michalak Brak komentarzy

Bardzo przydatną funkcją w Javie jest Arrays.asList(). Posiada jednak pewny kontrakt – zmiany w tablicy są widoczne w liście i na odwrót. Wynika to z faktu, że tworzona lista jest jedynie “widokiem” na tablicę – odwołuje się do tego samego miejsca na stercie. Obrazuje to poniższy przykład:

String[] tablica = new String[] {"1", "2", "3", "4", "5"};
List<String> list = Arrays.asList(tablica);
// zmiana elementu 
list.set(0, "a");
for (String tab : tablica) {
    System.out.print(tab + " ");
}		
 
// dodanie nowego elementu
list.add("6");
for (String tab : tablica) {
    System.out.print(tab + " ");
}

Wynikiem powyższych instrukcji jest:

a 2 3 4 5
UnsupportedOperationException

Jak widać zmiana elementu listy została odwzorowana również w tablicy, natomiast dodanie elementu do tablicy zakończyło się wyjątkiem. Jest to spowodowane faktem, że lista faktycznie odwołuje się do tablicy, która zaalokowana jest na stercie i jej powiększenie, bez utworzenia nowej tablicy jest niemożliwe.

Kategorie:Java Tagi:, ,