Hình thành khái niệm Kế thừa, Nếu một số phương thức vuông góc không có sẵn trong lớp hiện tại, nó sẽ tìm kiếm phương thức đó trong các siêu lớp. Nếu có sẵn nó thực thi.
Nó thực hiện phương thức AbstractList<E>
lớp add()
mà ném UnsupportedOperationException
.
Khi bạn đang chuyển đổi từ Mảng sang Bộ sưu tập Obejct. tức là, API dựa trên mảng để dựa trên bộ sưu tập, sau đó nó sẽ cung cấp cho bạn đối tượng bộ sưu tập có kích thước cố định, vì hành vi của Array có kích thước Cố định.
java.util.Arrays.asList (T ... a)
Mẫu Souce cho hình dạng.
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> {
//...
}
}
Hình thành Nguồn trên bạn có thể quan sát thấy java.util.Arrays.ArrayList
lớp đó không @Override add(index, element), set(index, element), remove(index)
. Vì vậy, từ thừa kế, nó thực hiện chức năng siêu AbstractList<E>
hạng add()
mà ném UnsupportedOperationException
.
Như AbstractList<E>
là một lớp trừu tượng, nó cung cấp việc thực hiện iterator() and listIterator()
. Vì vậy, chúng ta có thể lặp qua đối tượng danh sách.
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());
Bạn thậm chí có thể tạo lớp Bộ sưu tập dạng mảng Kích thước cố định Collections.unmodifiableList(list);
Nguồn mẫu:
public class Collections {
public static <T> List<T> unmodifiableList(List<? extends T> list) {
return (list instanceof RandomAccess ?
new UnmodifiableRandomAccessList<>(list) :
new UnmodifiableList<>(list));
}
}
Một Collection
- đôi khi được gọi là một thùng chứa - chỉ đơn giản là một đối tượng nhóm nhiều phần tử thành một đơn vị. Bộ sưu tập được sử dụng để lưu trữ, truy xuất, thao tác và giao tiếp dữ liệu tổng hợp.
@Xem thêm