Arrays to Lists in Java
sierpień 3rd, 2010
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.