logo

Java'daki Koleksiyonlar

  1. Java Koleksiyon Çerçevesi
  2. Koleksiyon Çerçevesi Hiyerarşisi
  3. Koleksiyon arayüzü
  4. Yineleyici arayüzü

Java'da koleksiyon nesne grubunu depolamak ve yönetmek için bir mimari sağlayan bir çerçevedir.

Java Koleksiyonları, bir veri üzerinde yaptığınız arama, sıralama, ekleme, değiştirme, silme gibi tüm işlemleri gerçekleştirebilir.

Java Koleksiyonu, tek bir nesne birimi anlamına gelir. Java Koleksiyonu çerçevesi birçok arayüz (Set, List, Queue, Deque) ve sınıflar ( Dizi Listesi Vektör, Bağlantılı liste , Öncelikli Sıra , HashSet, LinkedHashSet, TreeSet).

Java'da Koleksiyon Nedir?

Koleksiyon, tek bir nesne birimini, yani bir grubu temsil eder.

Java'da çerçeve nedir

  • Hazır mimari sağlar.
  • Bir dizi sınıf ve arayüzü temsil eder.
  • Bu isteğe bağlıdır.

Koleksiyon çerçevesi nedir

Koleksiyon çerçevesi, bir grup nesneyi depolamak ve işlemek için birleşik bir mimariyi temsil eder. Şunlara sahiptir:

  1. Arayüzler ve uygulamaları, yani sınıflar
  2. Algoritma

Biliyor musunuz?
  • Bir koleksiyonun öğelerini yinelemenin iki yolu nelerdir?
  • Koleksiyon çerçevesindeki ArrayList ve LinkedList sınıfları arasındaki fark nedir?
  • Koleksiyon çerçevesindeki ArrayList ve Vector sınıfları arasındaki fark nedir?
  • Koleksiyon çerçevesindeki HashSet ve HashMap sınıfları arasındaki fark nedir?
  • HashMap ve Hashtable sınıfı arasındaki fark nedir?
  • Koleksiyon çerçevesindeki Yineleyici ve Numaralandırma arayüzü arasındaki fark nedir?
  • Bir nesnenin elemanlarını nasıl sıralayabiliriz? Karşılaştırılabilir ve Karşılaştırıcı arayüzler arasındaki fark nedir?
  • hashcode() yöntemi ne işe yarar?
  • Java koleksiyonu ile Java koleksiyonları arasındaki fark nedir?

Koleksiyon Çerçevesi Hiyerarşisi

Koleksiyon çerçevesinin hiyerarşisini görelim. java.util paket tüm bunları içerir sınıflar Ve arayüzler Koleksiyon çerçevesi için.

Java Koleksiyonu çerçevesinin hiyerarşisi

Toplama Yöntemleri arayüzü

Koleksiyon arayüzünde bildirilen birçok yöntem vardır. Bunlar aşağıdaki gibidir:

HAYIR.YöntemTanım
1genel boole eklentisi(E e)Bu koleksiyona bir öğe eklemek için kullanılır.
2public boolean addAll(Koleksiyon c)Belirtilen koleksiyon öğelerini çağıran koleksiyona eklemek için kullanılır.
3genel boolean kaldırma (Nesne öğesi)Koleksiyondan bir öğeyi silmek için kullanılır.
4public boolean RemoveAll(Koleksiyon c)Belirtilen koleksiyonun tüm öğelerini çağıran koleksiyondan silmek için kullanılır.
5varsayılan boolean RemoveIf(Ölçüm filtresi)Koleksiyonun belirtilen yüklemi karşılayan tüm öğelerini silmek için kullanılır.
6public boole keepAll(Koleksiyon c)Belirtilen koleksiyon dışında çağrılan koleksiyonun tüm öğelerini silmek için kullanılır.
7genel int boyutu()Koleksiyondaki toplam öğe sayısını döndürür.
8genel geçersiz temizleme()Toplam öğe sayısını koleksiyondan kaldırır.
9public boolean içerir(Nesne öğesi)Bir elemanı aramak için kullanılır.
10genel boolean içerirTümü(Koleksiyon c)Koleksiyonda belirtilen koleksiyonu aramak için kullanılır.
on birpublic Yineleyici yineleyici()Bir yineleyici döndürür.
12public Object[] toArray()Koleksiyonu diziye dönüştürür.
13public T[] toArray(T[] a)Koleksiyonu diziye dönüştürür. Burada, döndürülen dizinin çalışma zamanı türü, belirtilen dizininkidir.
14genel boolean isEmpty()Koleksiyonun boş olup olmadığını kontrol eder.
on beşvarsayılan Akış paralelStream()Koleksiyonun kaynağı olduğu muhtemelen paralel bir Akış döndürür.
16varsayılan Akış akışı()Koleksiyonun kaynağı olduğu sıralı bir Akış döndürür.
17varsayılan Ayırıcı bölücü()Koleksiyondaki belirtilen öğeler üzerinde bir Spliterator oluşturur.
18genel boole eşittir (Nesne öğesi)İki koleksiyonla eşleşiyor.
19public int hashCode()Koleksiyonun karma kod numarasını döndürür.

Yineleyici arayüzü

Yineleyici arayüzü, elemanların yalnızca ileri yönde yinelenmesine olanak sağlar.

Yineleyici arayüzünün yöntemleri

Iterator arayüzünde yalnızca üç yöntem vardır. Bunlar:

HAYIR.YöntemTanım
1genel boolean hasNext()Yineleyicinin daha fazla öğesi varsa true değerini döndürür, aksi takdirde false değerini döndürür.
2public Nesne sonraki()Öğeyi döndürür ve imleç işaretçisini bir sonraki öğeye taşır.
3genel geçersiz kaldırma()Yineleyici tarafından döndürülen son öğeleri kaldırır. Daha az kullanılır.

Yinelenebilir Arayüz

Yinelenebilir arayüz, tüm koleksiyon sınıfları için kök arayüzdür. Koleksiyon arayüzü Yinelenebilir arayüzü genişletir ve bu nedenle Koleksiyon arayüzünün tüm alt sınıfları da Yinelenebilir arayüzü uygular.

Yalnızca bir soyut yöntem içerir. yani,

 Iterator iterator() 

Yineleyiciyi T tipindeki elemanlar üzerinde döndürür.

simetrik fark

Koleksiyon Arayüzü

Koleksiyon arayüzü, koleksiyon çerçevesindeki tüm sınıflar tarafından uygulanan arayüzdür. Her koleksiyonun sahip olacağı yöntemleri bildirir. Başka bir deyişle Collection arayüzünün, koleksiyon çerçevesinin dayandığı temeli oluşturduğunu söyleyebiliriz.

Koleksiyon arayüzünün yöntemlerinden bazıları, Koleksiyon arayüzünün tüm alt sınıfları tarafından uygulanan Boolean add ( Object obj), Boolean addAll ( Collection c), void clear() vb.'dir.


Liste Arayüzü

Liste arayüzü Koleksiyon arayüzünün alt arayüzüdür. Sıralı nesne koleksiyonunu saklayabileceğimiz liste tipi veri yapısını engeller. Yinelenen değerlere sahip olabilir.

Liste arayüzü ArrayList, LinkedList, Vector ve Stack sınıfları tarafından uygulanır.

Liste arayüzünü başlatmak için şunları kullanmalıyız:

 List list1= new ArrayList(); List list2 = new LinkedList(); List list3 = new Vector(); List list4 = new Stack(); 

Liste arayüzünde listedeki öğelere eklemek, silmek ve bunlara erişmek için kullanılabilecek çeşitli yöntemler vardır.

List arayüzünü uygulayan sınıflar aşağıda verilmiştir.


Dizi Listesi

ArrayList sınıfı Liste arayüzünü uygular. Farklı veri türlerinin yinelenen öğelerini depolamak için dinamik bir dizi kullanır. ArrayList sınıfı ekleme sırasını korur ve senkronize değildir. ArrayList sınıfında saklanan öğelere rastgele erişilebilir. Aşağıdaki örneği düşünün.

 import java.util.*; class TestJavaCollection1{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Ravi');//Adding object in arraylist list.add('Vijay'); list.add('Ravi'); list.add('Ajay'); //Traversing list through Iterator Iterator itr=list.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

Çıktı:

 Ravi Vijay Ravi Ajay 

Bağlantılı liste

LinkedList Koleksiyon arayüzünü uygular. Öğeleri depolamak için dahili olarak çift bağlantılı bir liste kullanır. Yinelenen öğeleri saklayabilir. Ekleme sırasını korur ve senkronize edilmez. LinkedList'te herhangi bir kaydırma gerekmediği için manipülasyon hızlıdır.

Aşağıdaki örneği düşünün.

 import java.util.*; public class TestJavaCollection2{ public static void main(String args[]){ LinkedList al=new LinkedList(); al.add('Ravi'); al.add('Vijay'); al.add('Ravi'); al.add('Ajay'); Iterator itr=al.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

Çıktı:

 Ravi Vijay Ravi Ajay 

Vektör

Vector, veri öğelerini depolamak için dinamik bir dizi kullanır. ArrayList'e benzer. Ancak senkronize edilir ve Koleksiyon çerçevesinin parçası olmayan birçok yöntem içerir.

Aşağıdaki örneği düşünün.

 import java.util.*; public class TestJavaCollection3{ public static void main(String args[]){ Vector v=new Vector(); v.add('Ayush'); v.add('Amit'); v.add('Ashish'); v.add('Garima'); Iterator itr=v.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

Çıktı:

 Ayush Amit Ashish Garima 

Yığın

Yığın, Vector'un alt sınıfıdır. Son giren ilk çıkar veri yapısını, yani Stack'i uygular. Yığın, Vector sınıfının tüm yöntemlerini içerir ve aynı zamanda özelliklerini tanımlayan boolean push(), boolean peek(), boolean push(object o) gibi yöntemlerini de sağlar.

Aşağıdaki örneği düşünün.

 import java.util.*; public class TestJavaCollection4{ public static void main(String args[]){ Stack stack = new Stack(); stack.push('Ayush'); stack.push('Garvit'); stack.push('Amit'); stack.push('Ashish'); stack.push('Garima'); stack.pop(); Iterator itr=stack.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

Çıktı:

 Ayush Garvit Amit Ashish 

Kuyruk Arayüzü

Kuyruk arayüzü ilk giren ilk çıkar sırasını korur. İşlenmek üzere olan elemanları tutmak için kullanılan sıralı bir liste olarak tanımlanabilir. Queue arayüzünü uygulayan PriorityQueue, Deque ve ArrayDeque gibi çeşitli sınıflar vardır.

Kuyruk arayüzü şu şekilde başlatılabilir:

 Queue q1 = new PriorityQueue(); Queue q2 = new ArrayDeque(); 

Queue arayüzünü uygulayan çeşitli sınıflar vardır, bunlardan bazıları aşağıda verilmiştir.


Öncelikli Sıra

PriorityQueue sınıfı Queue arayüzünü uygular. Önceliklerine göre işlenecek elemanları veya nesneleri tutar. PriorityQueue, boş değerlerin kuyrukta saklanmasına izin vermez.

Aşağıdaki örneği düşünün.

 import java.util.*; public class TestJavaCollection5{ public static void main(String args[]){ PriorityQueue queue=new PriorityQueue(); queue.add('Amit Sharma'); queue.add('Vijay Raj'); queue.add('JaiShankar'); queue.add('Raj'); System.out.println('head:'+queue.element()); System.out.println('head:'+queue.peek()); System.out.println('iterating the queue elements:'); Iterator itr=queue.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } queue.remove(); queue.poll(); System.out.println('after removing two elements:'); Iterator itr2=queue.iterator(); while(itr2.hasNext()){ System.out.println(itr2.next()); } } } 

Çıktı:

 head:Amit Sharma head:Amit Sharma iterating the queue elements: Amit Sharma Raj JaiShankar Vijay Raj after removing two elements: Raj Vijay Raj 

Ve arayüz

Deque arayüzü Queue arayüzünü genişletir. Deque'de elemanları her iki taraftan da çıkarabilir ve ekleyebiliriz. Deque, işlemleri her iki uçta da gerçekleştirmemizi sağlayan çift uçlu kuyruk anlamına gelir.

Deque şu şekilde örneklenebilir:

 Deque d = new ArrayDeque(); 

DiziDeque

ArrayDeque sınıfı Deque arayüzünü uygular. Deque'i kullanmamızı kolaylaştırır. Kuyruktan farklı olarak, öğeleri her iki uçtan da ekleyebilir veya silebiliriz.

ArrayDeque, ArrayList ve Stack'tan daha hızlıdır ve kapasite sınırlaması yoktur.

Aşağıdaki örneği düşünün.

 import java.util.*; public class TestJavaCollection6{ public static void main(String[] args) { //Creating Deque and adding elements Deque deque = new ArrayDeque(); deque.add('Gautam'); deque.add('Karan'); deque.add('Ajay'); //Traversing elements for (String str : deque) { System.out.println(str); } } } 

Çıktı:

 Gautam Karan Ajay 

Arayüzü Ayarla

Java'da Set Arayüzü java.util paketinde mevcuttur. Koleksiyon arayüzünü genişletir. Yinelenen öğeleri saklamamıza izin vermeyen sırasız öğeler kümesini temsil eder. Set'te en fazla bir null değer saklayabiliriz. Set, HashSet, LinkedHashSet ve TreeSet tarafından uygulanır.

Set şu şekilde başlatılabilir:

 Set s1 = new HashSet(); Set s2 = new LinkedHashSet(); Set s3 = new TreeSet(); 

Karma Kümesi

HashSet sınıfı Set Arayüzünü uygular. Depolama için karma tablo kullanan koleksiyonu temsil eder. Hashing, elemanları HashSet'te saklamak için kullanılır. Benzersiz öğeler içerir.

Aşağıdaki örneği düşünün.

 import java.util.*; public class TestJavaCollection7{ public static void main(String args[]){ //Creating HashSet and adding elements HashSet set=new HashSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); //Traversing elements Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

Çıktı:

 Vijay Ravi Ajay 

LinkedHashSet

LinkedHashSet sınıfı, Set Arayüzünün LinkedList uygulamasını temsil eder. HashSet sınıfını genişletir ve Set arayüzünü uygular. HashSet gibi, aynı zamanda benzersiz öğeler içerir. Ekleme sırasını korur ve boş öğelere izin verir.

Aşağıdaki örneği düşünün.

 import java.util.*; public class TestJavaCollection8{ public static void main(String args[]){ LinkedHashSet set=new LinkedHashSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

Çıktı:

 Ravi Vijay Ajay 

SortedSet Arayüzü

SortedSet, elemanları üzerinde toplam sıralama sağlayan Set arayüzünün alternatifidir. SortedSet'in elemanları artan (artan) sırada düzenlenir. SortedSet, elemanların doğal sıralamasını engelleyen ek yöntemler sağlar.

SortedSet şu şekilde başlatılabilir:

 SortedSet set = new TreeSet(); 

AğaçSet

Java TreeSet sınıfı, depolama için bir ağaç kullanan Set arayüzünü uygular. HashSet gibi TreeSet de benzersiz öğeler içerir. Ancak TreeSet'in erişim ve geri alma süresi oldukça hızlıdır. TreeSet'teki öğeler artan sırada saklanır.

Aşağıdaki örneği düşünün:

 import java.util.*; public class TestJavaCollection9{ public static void main(String args[]){ //Creating and adding elements TreeSet set=new TreeSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); //traversing elements Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

Çıktı:

 Ajay Ravi Vijay 
Java Collections Framework'te ne öğreneceğiz?
  1. ArrayList sınıfı
  2. LinkedList sınıfı
  3. Liste arayüzü
  4. HashSet sınıfı
  5. LinkedHashSet sınıfı
  6. TreeSet sınıfı
  7. PriorityQueue sınıfı
  8. Harita arayüzü
  9. HashMap sınıfı
  10. LinkedHashMap sınıfı
  11. Ağaç Haritası sınıfı
  12. Karma tablo sınıfı
  13. Sıralama
  14. Karşılaştırılabilir arayüz
  15. Karşılaştırıcı arayüzü
  16. Java'da özellikler sınıfı