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:
- Arayüzler ve uygulamaları, yani sınıflar
- 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.
Toplama Yöntemleri arayüzü
Koleksiyon arayüzünde bildirilen birçok yöntem vardır. Bunlar aşağıdaki gibidir:
HAYIR. | Yöntem | Tanım |
---|---|---|
1 | genel boole eklentisi(E e) | Bu koleksiyona bir öğe eklemek için kullanılır. |
2 | public boolean addAll(Koleksiyon c) | Belirtilen koleksiyon öğelerini çağıran koleksiyona eklemek için kullanılır. |
3 | genel boolean kaldırma (Nesne öğesi) | Koleksiyondan bir öğeyi silmek için kullanılır. |
4 | public boolean RemoveAll(Koleksiyon c) | Belirtilen koleksiyonun tüm öğelerini çağıran koleksiyondan silmek için kullanılır. |
5 | varsayılan boolean RemoveIf(Ölçüm filtresi) | Koleksiyonun belirtilen yüklemi karşılayan tüm öğelerini silmek için kullanılır. |
6 | public boole keepAll(Koleksiyon c) | Belirtilen koleksiyon dışında çağrılan koleksiyonun tüm öğelerini silmek için kullanılır. |
7 | genel int boyutu() | Koleksiyondaki toplam öğe sayısını döndürür. |
8 | genel geçersiz temizleme() | Toplam öğe sayısını koleksiyondan kaldırır. |
9 | public boolean içerir(Nesne öğesi) | Bir elemanı aramak için kullanılır. |
10 | genel boolean içerirTümü(Koleksiyon c) | Koleksiyonda belirtilen koleksiyonu aramak için kullanılır. |
on bir | public Yineleyici yineleyici() | Bir yineleyici döndürür. |
12 | public Object[] toArray() | Koleksiyonu diziye dönüştürür. |
13 | public T[] toArray(T[] a) | Koleksiyonu diziye dönüştürür. Burada, döndürülen dizinin çalışma zamanı türü, belirtilen dizininkidir. |
14 | genel 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. |
16 | varsayılan Akış akışı() | Koleksiyonun kaynağı olduğu sıralı bir Akış döndürür. |
17 | varsayılan Ayırıcı bölücü() | Koleksiyondaki belirtilen öğeler üzerinde bir Spliterator oluşturur. |
18 | genel boole eşittir (Nesne öğesi) | İki koleksiyonla eşleşiyor. |
19 | public 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öntem | Tanım |
---|---|---|
1 | genel boolean hasNext() | Yineleyicinin daha fazla öğesi varsa true değerini döndürür, aksi takdirde false değerini döndürür. |
2 | public Nesne sonraki() | Öğeyi döndürür ve imleç işaretçisini bir sonraki öğeye taşır. |
3 | genel 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 VijayJava Collections Framework'te ne öğreneceğiz?
- ArrayList sınıfı
- LinkedList sınıfı
- Liste arayüzü
- HashSet sınıfı
- LinkedHashSet sınıfı
- TreeSet sınıfı
- PriorityQueue sınıfı
- Harita arayüzü
- HashMap sınıfı
- LinkedHashMap sınıfı
- Ağaç Haritası sınıfı
- Karma tablo sınıfı
- Sıralama
- Karşılaştırılabilir arayüz
- Karşılaştırıcı arayüzü
- Java'da özellikler sınıfı