"Hai, Amigo!"

"Hai, Elli!"

"Hari ini kita akan membahas struktur koleksi untuk selamanya."

"Aku sudah menunggu lama untuk ini."

"Kamu sudah tahu apa itu koleksi, dan kamu tahu cara bekerja dengannya. Sudah waktunya untuk mengatur pengetahuanmu ke dalam sistem yang ketat. Kemudian banyak pertanyaan 'mengapa' dan 'bagaimana' akan hilang, dan banyak hal akan menjadi jelas."

" Antarmuka koleksi . Struktur pewarisan antarmuka koleksi terlihat seperti ini:"

Antarmuka koleksi - 1

Perhatikan dua hal.

Pertama, semua yang Anda lihat di sini adalah antarmuka.

Kedua, tanda panah berarti «mewarisi».

"Dengan kata lain, List, Set, dan Queue mewarisi Collection, tapi Map tidak?"

"Ya. Kelas abstrak kemudian mewarisi antarmuka ini dan, pada gilirannya, implementasi yang Anda ketahui tentang mewarisi kelas abstrak tersebut:  ArrayList, Hashtable, TreeSet,… "

"Kamu benar."

"Sekarang mari kita lihat untuk apa metode antarmuka ini:"

Metode antarmuka Iterable<E> ::

Metode Keterangan
Iterator<T> iterator(); Mengembalikan objek iterator.

"Itu sepertinya tidak cukup."

"Nah, ada berapa banyak. Itu saja untuk iterator. Kami tidak akan membahasnya sekarang, tapi kami akan membahasnya secara detail segera."

Metode Pengumpulan <E>: antarmuka:

Metode Keterangan
boolean add(E e); Menambahkan elemen ke koleksi
boolean addAll(Collection<? extends E> c); Menambahkan elemen ke koleksi
void clear(); Menghapus semua elemen dari koleksi
boolean contains(Object o); Periksa untuk melihat apakah koleksi berisi elemen.
boolean containsAll(Collection<?> c); Periksa untuk melihat apakah koleksi berisi elemen.
boolean equals(Object o); Periksa untuk melihat apakah koleksi setara
int hashCode(); Mengembalikan kode hash
boolean isEmpty(); Periksa untuk melihat apakah koleksinya kosong.
Iterator<E> iterator(); Mengembalikan objek iterator
boolean remove(Object o); Menghapus elemen dari koleksi
boolean removeAll(Collection<?> c); Menghapus elemen dari koleksi
boolean retainAll(Collection<?> c); Menghapus semua elemen yang tidak ada di c
int size(); Mengembalikan ukuran koleksi
Object[] toArray(); Mengubah koleksi menjadi array
<T> T[] toArray(T[] a); Mengubah koleksi menjadi array

"Saya sudah solid dalam segala hal di sini. Saya telah menggunakan setengah dari metode ini, dan saya telah menemukan setengah lainnya."

"Bagus, mari kita lanjutkan kalau begitu."

Metode Daftar  <E>: antarmuka:

Metode Keterangan
void add(int index, E element); Menambahkan elemen ke tengah koleksi
boolean addAll(int index, Collection<? extends E> c); Menambahkan elemen ke koleksi
E get(int index); Mengembalikan elemen berdasarkan indeks
int indexOf(Object o); Mengembalikan indeks (nomor) elemen
int lastIndexOf(Object o); Mengembalikan indeks elemen terakhir.
ListIterator<E> listIterator(); Mengembalikan iterator untuk daftar
ListIterator<E> listIterator(int index); Mengembalikan iterator untuk daftar
E remove(int index); Menghapus elemen berdasarkan indeksnya
E set(int index, E element); Menetapkan nilai baru berdasarkan indeks
List<E> subList(int fromIndex, int toIndex); Mengembalikan subkoleksi

"Tidak ada yang benar-benar baru di sini juga. Saya sudah mengetahui hampir semua hal tentang koleksi, yang membuat saya senang."

"Yah, saya rasa saya dapat menemukan sesuatu yang akan mengejutkan Anda. Tapi mari kita lanjutkan memeriksa antarmuka:"

Metode antarmuka Set<E> ::

Metode Keterangan
Tidak ada metode

"Antarmuka Set tidak memiliki metode baru — hanya metode yang diwarisinya."

"Ya, saya melihat bahwa antarmuka Interable juga tidak memiliki apa-apa.

"Di sisi lain, lebih sedikit metode berarti lebih sedikit yang harus diingat!"

"Optimisme Anda yang meneguhkan hidup membuat saya bahagia."

"Antarmuka Set diwariskan oleh dua antarmuka dengan metode: SortedSet dan NavigableSet. Tapi saya tidak akan membahasnya, atau kita tidak akan pernah selesai."

"Sebagai gantinya, izinkan saya memberi Anda gambaran umum tentang kelas dan antarmuka yang menjelaskan koleksi di Java."

"Ayo."

"Kalau begitu pegang erat-erat:"

Antarmuka koleksi - 2

"Wow, itu sangat besar!"

"Yah, itu tidak terlalu besar. Juga, ingatlah bahwa kelas abstrak sepenuhnya opsional. Tapi ada baiknya untuk mengingat kelas mana yang mengimplementasikan antarmuka mana. Itu bisa berguna cukup sering."

"Oh, saya juga ingin mencatat bahwa beberapa koleksi dianggap usang."

"Yang mana itu?"

"Saya berbicara tentang kelas Vector, Stack, Dictionary, dan Hashtable. Ini adalah versi koleksi biasa yang disinkronkan (aman-benang)."

"Tetapi Java telah menambahkan pustaka konkurensi khusus dengan banyak koleksi yang tidak hanya dapat diakses dari utas lain, tetapi juga memiliki implementasi yang jauh lebih efisien.  ConcurrentHashMap jauh lebih efisien daripada Hashtable ."

"Anda dapat menggunakan koleksi Vector, Stack, Dictionary, dan Hashtable, tetapi tidak disarankan."

"Mengerti, aku akan mengingatnya."

"Terima kasih, Ellie!"