Сформируйте концепцию наследования. Если какой-либо перикулярный метод недоступен в текущем классе, он будет искать этот метод в суперклассах.Если доступно, он выполняет.
Он выполняет AbstractList<E>
class add()
метод, который выбрасывает UnsupportedOperationException
.
Когда вы конвертируете из массива в коллекционный объект.то есть, на основе массива для API на основе коллекции, то он предоставит вам объект коллекции фиксированного размера, потому что поведение массива имеет фиксированный размер.
java.util.Arrays.asList (T... а)
Образцы соусов для конформации.
public class Arrays {
public static <T> List<T> asList(T... a) {
return new java.util.Arrays.ArrayList.ArrayList<>(a); // Arrays Inner Class ArrayList
}
//...
private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable {
//...
}
}
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {
public void add(int index, E element) {
throw new UnsupportedOperationException();
}
public E set(int index, E element) {
throw new UnsupportedOperationException();
}
public E remove(int index) {
throw new UnsupportedOperationException();
}
public Iterator<E> iterator() {
return new Itr();
}
private class Itr implements Iterator<E> {
//...
}
public ListIterator<E> listIterator() {
return listIterator(0);
}
private class ListItr extends Itr implements ListIterator<E> {
//...
}
}
Из вышеприведенного источника вы можете заметить, что класс java.util.Arrays.ArrayList
не @Override add(index, element), set(index, element), remove(index)
.Таким образом, из наследования он выполняет функцию супер AbstractList<E>
class add()
, которая выдает UnsupportedOperationException
.
Поскольку AbstractList<E>
является абстрактным классом, он обеспечивает реализацию iterator() and listIterator()
.Таким образом, мы можем перебрать объект списка.
List<String> list_of_Arrays = Arrays.asList(new String[] { "a", "b" ,"c"});
try {
list_of_Arrays.add("Yashwanth.M");
} catch(java.lang.UnsupportedOperationException e) {
System.out.println("List Interface executes AbstractList add() fucntion which throws UnsupportedOperationException.");
}
System.out.println("Arrays → List : " + list_of_Arrays);
Iterator<String> iterator = list_of_Arrays.iterator();
while (iterator.hasNext()) System.out.println("Iteration : " + iterator.next() );
ListIterator<String> listIterator = list_of_Arrays.listIterator();
while (listIterator.hasNext()) System.out.println("Forward iteration : " + listIterator.next() );
while(listIterator.hasPrevious()) System.out.println("Backward iteration : " + listIterator.previous());
Вы даже можете создать массив массивов фиксированного размера. Класс коллекций Collections.unmodifiableList(list);
Источник выборки:
public class Collections {
public static <T> List<T> unmodifiableList(List<? extends T> list) {
return (list instanceof RandomAccess ?
new UnmodifiableRandomAccessList<>(list) :
new UnmodifiableList<>(list));
}
}
A Collection
- иногда называемый контейнером - это просто объект, который группирует несколько элементов в одну единицу.Коллекции используются для хранения, извлечения, обработки и передачи сводных данных.
@ см. Также