"Merhaba, Amigo!"

"Merhaba Ellie!"

"Bugün, koleksiyonların yapısını ilk ve son kez ele alacağız."

"Bunun için uzun süre bekledim."

"Koleksiyonların ne olduğunu zaten biliyorsunuz ve onlarla nasıl çalışılacağını biliyorsunuz. Bilginizi katı bir sistem içinde düzenlemenin zamanı geldi. O zaman birçok 'neden' ve 'nasıl' sorusu ortadan kalkacak ve çoğu şey apaçık hale gelecek."

" Koleksiyon arayüzleri . Koleksiyon arayüzlerinin kalıtım yapısı şuna benzer:"

Toplama arayüzleri - 1

İki şeye dikkat edin.

İlk olarak, burada gördüğünüz her şey bir arayüz.

İkincisi, oklar "miras" anlamına gelir.

"Başka bir deyişle, Liste, Küme ve Kuyruk, Koleksiyonu devralır, ancak Harita almaz?"

"Evet. Soyut sınıflar daha sonra bu arabirimleri devralır ve sırayla, hakkında bildiğiniz uygulamalar şu soyut sınıfları devralır:  ArrayList, Hashtable, TreeSet,... "

"Haklısın."

"Şimdi bu arabirimlerin yöntemlerinin ne işe yaradığına bakalım:"

Iterable<E>: arabiriminin yöntemleri :

Yöntemler Tanım
Iterator<T> iterator(); Bir yineleyici nesnesi döndürür.

"Bu yeterli görünmüyor."

"Pekala, bu kadar çok var. Hepsi yineleyiciler için bu kadar. Bunları şimdi ele almayacağız ama yakında ayrıntılı olarak ele alacağız."

Koleksiyon Yöntemleri <E>: interface:

Yöntemler Tanım
boolean add(E e); Koleksiyona bir öğe ekler
boolean addAll(Collection<? extends E> c); Koleksiyona öğeler ekler
void clear(); Koleksiyondaki tüm öğeleri kaldırır
boolean contains(Object o); Koleksiyonun öğeyi içerip içermediğini kontrol eder.
boolean containsAll(Collection<?> c); Koleksiyonun öğeleri içerip içermediğini kontrol eder.
boolean equals(Object o); Koleksiyonların eşdeğer olup olmadığını kontrol eder
int hashCode(); Hash kodunu döndürür
boolean isEmpty(); Koleksiyonun boş olup olmadığını kontrol eder.
Iterator<E> iterator(); Bir yineleyici nesnesi döndürür
boolean remove(Object o); Koleksiyondan bir öğeyi kaldırır
boolean removeAll(Collection<?> c); Öğeleri koleksiyondan kaldırır
boolean retainAll(Collection<?> c); c'de olmayan tüm öğeleri kaldırır
int size(); Koleksiyonun boyutunu döndürür
Object[] toArray(); Koleksiyonu bir diziye dönüştürür
<T> T[] toArray(T[] a); Koleksiyonu bir diziye dönüştürür

"Burada zaten her konuda katıyım. Bu yöntemlerin yarısını kullandım ve diğer yarısıyla karşılaştım."

"Harika, devam edelim o zaman."

 List<E> Yöntemleri : interface:

Yöntemler Tanım
void add(int index, E element); Koleksiyonun ortasına öğeler ekler
boolean addAll(int index, Collection<? extends E> c); Koleksiyona öğeler ekler
E get(int index); Bir öğeyi dizine göre döndürür
int indexOf(Object o); Bir öğenin dizinini (sayısını) döndürür
int lastIndexOf(Object o); Son öğenin dizinini döndürür.
ListIterator<E> listIterator(); Liste için bir yineleyici döndürür
ListIterator<E> listIterator(int index); Liste için bir yineleyici döndürür
E remove(int index); Bir öğeyi dizinine göre kaldırır
E set(int index, E element); Dizine göre yeni bir değer ayarlar
List<E> subList(int fromIndex, int toIndex); Bir alt koleksiyon döndürür

"Burada da kökten yeni bir şey yok. Koleksiyonlarla ilgili hemen hemen her şeyi zaten biliyorum ve buna sevinmekten kendimi alamıyorum."

"Pekala, sanırım seni şaşırtacak bir şey bulabilirim. Ama arayüzleri incelemeye devam edelim:"

Set<E>: arabiriminin yöntemleri :

Yöntemler Tanım
Yöntem yok

"Set arabiriminin herhangi bir yeni yöntemi yoktur - yalnızca devraldığı yöntemler."

"Evet, Interable arayüzünün de hiçbir şeye sahip olmadığını gördüm.

"Öte yandan, daha az yöntem daha az hatırlanacak demektir!"

"Hayatı onaylayan iyimserliğin beni mutlu ediyor."

"Set arabirimi, yöntemleri olan iki arabirim tarafından miras alınır: SortedSet ve NavigableSet. Ama bunların üzerinden geçmeyeceğim, yoksa asla bitiremeyeceğiz."

"Bunun yerine, size Java'daki koleksiyonları tanımlayan sınıfların ve arayüzlerin genel bir resmini vereyim."

"Onu getirmek."

"Öyleyse sıkı tutun:"

Toplama arayüzleri - 2

"Vay canına, bu çok büyük!"

"Eh, o kadar büyük değil. Ayrıca, soyut sınıfların tamamen isteğe bağlı olduğunu unutmayın. Ama hangi sınıfın hangi arabirimleri uyguladığını hatırlamakta fayda var. Bu oldukça sık işe yarayabilir."

"Ah, ayrıca bazı koleksiyonların modası geçmiş kabul edildiğini de belirtmek isterim."

"Onlar hangileri?"

"Vector, Stack, Dictionary ve Hashtable sınıflarından bahsediyorum. Bunlar, sıradan koleksiyonların senkronize edilmiş (thread-safe) versiyonları."

"Ancak Java , yalnızca diğer iş parçacığından erişilebilen değil, aynı zamanda çok daha verimli bir uygulamaya sahip olan birçok koleksiyon içeren  özel bir eşzamanlılık kitaplığı ekledi . ConcurrentHashMap , Hashtable'dan çok daha verimli ."

"Vector, Stack, Dictionary ve Hashtable koleksiyonlarını kullanabilirsiniz, ancak bu önerilmez."

"Anladım, bunu aklımda tutacağım."

"Teşekkürler Ellie!"