Metoda Arrays.asList()

Tato metoda vrací list fixní délky. To znamené, že jakýkoliv pokus o změnu velikosti tohoto listu skončí chybou UnsupportedOperationException.

Ať už se jedná o odebrání prvku,

List list = Arrays.asList("a", "b", "c", "b");
		
ListIterator iterator = list.listIterator();
while (iterator.hasNext()) {
	if (iterator.next().equals("b")) {
		iterator.remove();
	}
}

nebo o přidání prvku,

List list = Arrays.asList("a", "b", "c", "b");
		
ListIterator iterator = list.listIterator();
while (iterator.hasNext()) {
	if (iterator.next().equals("b")) {
		iterator.add("bbb");
	}
}

dostaneme následující chybu.

Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.AbstractList.add(AbstractList.java:148)
	at java.util.AbstractList$ListItr.add(AbstractList.java:438)
        ...

V případě, že chceme vytvořil list s proměnnou velikostí, můžeme použít parametrický konstruktor ArrayList(kolekce).

List list = new ArrayList(Arrays.asList("a", "b", "c", "b"));
		
ListIterator iterator = list.listIterator();
while (iterator.hasNext()) {
	if (iterator.next().equals("b")) {
		iterator.remove();
	}
}

Výsledkem je následující list: [a, c].

Napsat komentář