java collections framework tutorial
Bu Eğitimde, Koleksiyon Hiyerarşisi, Çeşitli Arayüzler ve JCF'nin Avantajları ile birlikte Java Koleksiyon Çerçevesi (JCF) ayrıntılı olarak açıklanmaktadır:
Umarım bu güzel öğreticiler bununla ilgili Yeni başlayanlar için Java Serisi Java bilginizi zenginleştirmede gerçekten faydalıdır.
Önceki öğreticimiz, Java'da temel G / Ç işlemleri . Bu eğitimde Java Collections Framework (JCF) hakkında ayrıntılı olarak bilgi edineceğiz.
Java Collections Framework (JCF), bir grup nesneyi depolamak ve işlemek için mimari sağlayabilen arayüzler, soyut sınıflar ve sınıflar içerir.
Ne öğreneceksin:
- Java Collections Framework Üzerine Eğitim Videoları
- Sonuç
Java Collections Framework Üzerine Eğitim Videoları
Java'da Dizi Listesi Bilgisi:
Java'da Arayüz ve Sıra Arayüzünü Gerçek zamanlı örneklerle ayarlayın:
Java'da HashMap, TreeMap ve HashTable:
Şimdiye kadar, farklı veri türlerini depolayan değişkenler gördük. Bunlar tekil birimlerdir ve depolamak ve ilgilenmek için büyük miktarda veriniz olduğunda çok yararlı değildir. Bildiğimiz gibi veri, bilgisayar işlemenin en önemli bileşenidir.
Uygulamanız, verileri ayıklayıp toplayabilmeli, yararlı bilgiler bulmak için işleyebilmeli ve aynı zamanda çözümlere ulaşmak için verimli bir şekilde kullanılabilmesi için bunları ileri geri aktarabilmelidir.
Bu yazılım dünyasında, yazılım programlarının sonuçları depolayabilmesi, okuyabilmesi, işleyebilmesi ve son olarak çıktı verebilmesi için belirli bir şekilde yapılandırılması gereken verileri depoluyoruz. Bu, veri yapıları kullanılarak yapılır.
Hemen hemen tüm programlama dilleri veri yapılarını destekler. Veri yapısı, verilerin yapılandırılmış bir temsili olarak tanımlanabilir. Programlama dilleri, veri yapılarını işlemek için API (Uygulama Programlama Arayüzü) işlevleri sağlar.
Koleksiyon Çerçevesi İhtiyacı
Java 1.2'den önce, Java programlama dili diziler, vektörler veya karma tablolar gibi veri yapılarını destekliyordu. Bu veri yapıları üzerinde çalışan ortak bir arayüz olmadığından bu veri yapıları üzerinde işlem yapmak kolay değildi.
Programcılar, tüm veri yapıları için işe yarayacak algoritmalar yazmayı zor buluyorlardı ve büyük bir güçlük oluşturuyordu. Tüm veri yapılarında tutarlı bir şekilde çalışacak ve aynı zamanda işlemleri verimli bir şekilde gerçekleştirecek ortak bir arayüze ihtiyaç vardı.
Daha sonra Java, veri yapıları üzerinde gerçekleştirilebilecek çeşitli işlemlerden oluşan bir grup sınıf ve arayüzden oluşan bir koleksiyon çerçevesi ortaya çıkardı.
Bu Java Koleksiyonları Eğitiminde, genel olarak Java Koleksiyonları Çerçevesini tartışacağız. Gelecek eğitimlerimizde koleksiyon bileşenlerinin her birini inceleyeceğiz.
Java Koleksiyonları Çerçevesi
Bir Java Koleksiyonları Çerçevesi tanımlamadan önce, koleksiyonun ve çerçevenin anlamını öğrenelim.
Bir koleksiyon, bir nesne grubu olarak tanımlanabilir. Bir koleksiyon genellikle birden fazla nesneden oluşan tek bir birimdir. Çerçeve, hazır işlevsel bir arayüze veya mimariye sahip olan ve ayrıca sağlanan arayüzle kullanılacak bir dizi sınıf ve arayüz içeren bir yazılımdır.
Bir koleksiyon çerçevesi, aşağıdakilerden oluşan birleşik, hazır bir mimari olarak tanımlanır.
# 1) Algoritmalar
Bunlar, programcılara toplanan verilerin aranması, sıralanması ve işlenmesinde yardımcı olabilecek yöntemler veya ifadeler kümesidir. Koleksiyon, Arayüzler, sınıflar ve algoritmalarla paketlenmiş olarak gelir.
Koleksiyon çerçevesini miras alarak geliştirilen uygulamalar, bu algoritmalara erişime sahiptir ve önceden tanımlanmış yöntem ve prosedürleri kullanır.
# 2) Arayüzler
Java'daki arayüzler, uygulamanın soyutlamasını sağlar, yani arayüzlerin kullanılması, kullanıcı uygulamanın ayrıntılarının farkında değildir, ancak yalnızca bir uygulamayı yazmak için gereken yöntemleri ve verileri görebilir. Koleksiyon arabirimi, programcı tarafından kendi sınıflarını yazmak için uygulanabilen birçok arabirime sahiptir.
# 3) Sınıflar
Toplama Çerçevesi sınıfları, bir programda uygulanabilen veri yapılarıdır. Bu sınıflar 'Koleksiyon' arayüzünü uygular ve böylece koleksiyon arayüzünün tüm yöntemlerini ve tanımlarını devralır.
Nesne grubu olan koleksiyonu depolamak ve işlemek için bir koleksiyon çerçevesi kullanılır.
Java toplama çerçevesi, arama, sıralama ve işleme gibi standart işlemleri gerçekleştiren yüksek performanslı algoritmalardan oluşur. LinkedList, TreeSet ve HashSet gibi arayüzlerin sağlandığı çeşitli standart uygulamalar sağlar.
Şimdi, Java Koleksiyon Hiyerarşisini anlayalım.
Java Koleksiyon Hiyerarşisi
Aşağıdaki Java Koleksiyonu hiyerarşisinde gösterilen tüm sınıflar ve arayüzler “java.util. *” Paketine aittir.
Yukarıdaki diyagramda gösterildiği gibi, Java Koleksiyon Hiyerarşisi çeşitli sınıflardan ve arayüzlerden oluşur. Gördüğünüz gibi, sınıfların her biri bir arabirimden miras alır ve tüm sınıflar ve arabirimler de tek bir 'koleksiyon' arabiriminden miras alır.
Koleksiyon arayüzündeki bazı yaygın yöntemleri, yukarıdaki hiyerarşide gösterilen sınıfların ve arayüzlerin her biri hakkında kısa bir girişle birlikte tartışalım.
Koleksiyon Arayüzü
Koleksiyon arayüzü, kök arayüzdür. Koleksiyon çerçevesindeki tüm sınıflar, koleksiyon arabirimini uygular. Bu, her koleksiyonun Koleksiyon arayüzünde bildirilen yöntemlere sahip olacağı anlamına gelir.
Koleksiyon arayüzünün yöntemlerinden bazıları aşağıda verilmiştir.
Yapma | Yöntem Prototipi | Açıklama |
---|---|---|
7 | varsayılan boole removeIf (Tahmin filtresi) | Koleksiyondan belirli bir 'filtreyi' karşılayan tüm öğeleri kaldırın. |
1 | public int size () | Belirli bir koleksiyondaki öğe sayısını döndürür. |
iki | public void clear () | Koleksiyondaki tüm öğeleri kaldırarak koleksiyonu temizler. |
3 | genel boolean ekleme (E e) | Koleksiyona bir e öğesi ekler. |
4 | public booleanaddAll (Koleksiyon c) | C ile verilen koleksiyondaki tüm öğeleri koleksiyona ekleyin. |
5 | public boolean remove (Nesne öğesi) | Koleksiyondan 'element' tarafından verilen elementi silin. |
6 | public boolean removeAll (Collectionc) | Koleksiyon c'yi koleksiyondan çıkarın. |
8 | public booleanretainAll (Koleksiyon c) | Belirtilen koleksiyondakiler dışındaki tüm öğeleri koleksiyondan silin c. |
9 | genel Yineleyici yineleyici () | Koleksiyon için dönüş yineleyicisi. |
10 | genel Nesne () toArray () | Koleksiyonu bir diziye dönüştürün. |
on bir | genel T () toArray (T () a) | Koleksiyonu, belirtilen dönüş türüne sahip bir diziye dönüştürün. |
12 | public boolean isEmpty () | Koleksiyon boşsa iade edin. |
13 | public boolean (Nesne öğesi) içerir | Bir koleksiyonun verilen öğeyi içerip içermediğini kontrol edin (Arama işlemi). |
14 | public booleancontainsAll (Collectionc) | Koleksiyonun içinde belirtilen c koleksiyonunu içerip içermediğini kontrol edin. |
on beş | varsayılan Spliterator spliterator () | Spliterator'ı belirli bir koleksiyon üzerinde döndürür. |
16 | public booleanequals (Nesne öğesi) | İki koleksiyonu eşleştirmek için kullanılır. |
17 | varsayılan Akış paralel Akış () | Koleksiyonu kaynak olarak kullanarak paralel akışı döndürür. |
18 | varsayılan Akış () | Koleksiyonu kaynak olarak kullanarak sıralı akışı döndürür. |
19 | public int hashCode () | Koleksiyonun sayısal karma kodunu döndürür. |
Tekrarlanabilir Arayüz
Yinelenebilir arabirim, aynı zamanda koleksiyon çerçevesinin temel arabirimidir. Diğer tüm sınıfların ana arabirimi olan Koleksiyon arabirimi, yinelenebilir arabirimi genişletir. Dolayısıyla, tüm sınıflar bir koleksiyon arabiriminin yanı sıra yinelenebilir bir arabirim uygular.
Yinelenebilir arabirim, T türündeki öğeleri yinelemek için kullanabileceğiniz yineleyiciyi () döndüren yalnızca bir yöntem yineleyicisine () sahiptir.
Iterator iterator ()
Yineleyici Arayüzü
Yineleyici arabirimi, öğeler üzerinde ileri yönde yineleme yeteneği sağlar.
Aşağıdakiler, bu arayüz tarafından desteklenen yöntemlerdir.
Yapma | Yöntem Prototipi | Açıklama |
---|---|---|
1 | genel Nesne sonraki () | Önce öğeyi döndürür ve ardından imleci bir sonraki öğeyi gösterecek şekilde hareket ettirir. |
iki | genel boole hasNext () | Yineleyicide daha fazla öğe olup olmadığını kontrol eder. |
3 | public void remove () | Sonunda yineleyici tarafından döndürülen öğeyi kaldırır. |
Liste Arayüzü
Liste arayüzü, koleksiyon arayüzünü devralır. Liste arayüzü, sıralı verileri veya nesnelerin koleksiyonunu depolamak için kullanılan veri yapılarını içerir. Bu veri yapıları bir liste tipindedir. Liste arayüzünü uygulayan bu veri yapıları, yinelenen değerlere sahip olabilir veya olmayabilir.
Liste arayüzü, liste nesnelerine erişmek, öğeleri eklemek veya listeden çıkarmak için kullanılan yöntemleri içerir.
List arayüzünü uygulayan çeşitli sınıflar aşağıdaki gibidir:
Deneyimli için c ++ mülakat soruları ve cevapları
- Dizi Listesi
- Bağlantılı liste
- Vektör
- Yığın
Bu sınıfların her birini kısaca tartışacağız. Sonraki konularımız, koleksiyon çerçeve sınıflarının her biri hakkında ayrıntılı bir tartışmaya sahip olacak.
# 1) Dizi Listesi
ArrayList, List arayüzünün en basit uygulamasıdır. ArrayList, ekleme sırasını korur ve senkronize edilmez.
ArrayList veri yapısının (Koleksiyon) genel tanımı aşağıdaki gibidir:
List list1= new ArrayList ();
Liste tanımlandıktan sonra, öğe eklemek için 'ekle' yöntemini kullanabilirsiniz. ArrayList'in dahili olarak dinamik dizi mekanizmasını kullandığına dikkat edin.
ArrayList renk koleksiyonunu oluşturan aşağıdaki örneklere bakın.
import java.util.*; class Main { public static void main(String args()) { //Creating arraylist of String objects ArrayList color_list=new ArrayList(); //populate the arraylist with add method color_list.add('Red'); color_list.add('Green'); color_list.add('Blue'); color_list.add('Cyan'); color_list.add('Magenta'); color_list.add('Yellow'); //Traverse the list through Iterator Iterator itr=color_list.iterator(); System.out.println('The contents of the arraylist are:'); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Çıktı:
Yukarıdaki program ArrayList koleksiyonunun gösterimini gösterir. Koleksiyona renk değerleri ekleriz ve ardından bir yineleyici kullanarak koleksiyondaki tek tek değerleri görüntülemek için koleksiyonda geziniriz.
# 2) LinkedList
LinkedList koleksiyonu, öğeleri depolamak için dahili olarak çift bağlantılı bir liste mekanizması kullanır. Yinelenen öğeler içerebilir. LinkedList toplama işlemleri, öğelerin kaydırılması gerekmediğinden daha hızlıdır.
Bağlantılı bir liste oluşturmanın genel tanımı aşağıdaki gibidir:
List list2 = new LinkedList ();
Aşağıdaki program gösterir sayı adlarının bağlantılı liste koleksiyonu .
import java.util.*; class Main { public static void main(String args()) { //linked list of String objects LinkedList linkedlist_num=new LinkedList(); linkedlist_num.add('one'); linkedlist_num.add('two'); linkedlist_num.add('three'); linkedlist_num.add('four'); linkedlist_num.add('five'); //iterate over the linked list to display contents Iterator itr=linkedlist_num.iterator(); System.out.println('The contents of the linked list are:'); while(itr.hasNext()) { System.out.println(itr.next()); } } }
Çıktı:
Bu nedenle, bağlantılı bir liste oluştururuz ve ardından 'ekle' yöntemini kullanarak ona öğeler ekleriz. Sonra bir yineleyici kullanarak bağlantılı listeyi gezer ve her bir öğeyi görüntüleriz.
# 3) Vektör
Vector, ArrayList'e benzer ve ArrayList gibi öğeleri depolamak için dinamik bir dizi kullanır. Ancak vektör, koleksiyonun dışında birçok bağımsız yöntemi destekler ve bu da onu tercih edilen bir koleksiyon olmayı daha iyi bir seçim haline getirir.
Vektör toplama için genel tanım şudur:
List list3 = new Vector();
Vektör ve ArrayList aynı dinamik diziler mekanizmasını kullanmasına rağmen, vektör öğelerinin senkronize edildiğini unutmayın.
Aşağıda verilen Java programı, toplama çerçevesinde vektörlerin kullanımını gösterir. .
import java.util.*; public class Main { public static void main(String args()) { Vector subject_vector=new Vector(); subject_vector.add('English'); subject_vector.add('Hindi'); subject_vector.add('Maths'); subject_vector.add('Science'); Iterator itr=subject_vector.iterator(); System.out.println('Vector contents:'); while(itr.hasNext()) { System.out.println(itr.next()); } } }
Çıktı:
Bu programda konulardan oluşan bir vektör koleksiyonu tanımladık. Çeşitli konular ekliyoruz ve ardından öğeleri çıkarmak için bir yineleyici kullanıyoruz.
# 4) Yığın
Yığın veri yapısı, öğeleri eklemenin son giren ilk çıkar (LIFO) yöntemini uygular. Yığın, sınıf vektörünün bir alt sınıfıdır (yukarıdaki koleksiyon hiyerarşi diyagramına bakın). Yığın koleksiyonu, kendi yöntemlerinin yanı sıra vektör toplama yöntemlerini de destekler.
Yığın koleksiyonunun genel tanımı şöyledir:
List list4 = new Stack();
Aşağıdaki program Yığın koleksiyonunu uygular .
import java.util.*; public class Main { public static void main(String args()) { Stack even_stack = new Stack (); even_stack.push(2); even_stack.push(4); even_stack.push(6); even_stack.push(8); even_stack.push(10); System.out.println('The element removed from stack: ' + even_stack.pop()); Iterator itr=even_stack.iterator(); System.out.println('The contents of the stack are:'); while(itr.hasNext()) { System.out.print(itr.next() + ' '); } } }
Çıktı:
Yukarıdaki uygulamada görebileceğiniz gibi, yeni öğeler yığına eklenir. 'it' operasyon. Yığının, 'Yığının tepesi' adı verilen tek bir giriş noktası vardır ve öğeler, üstteki yığına itilir. Böylece, eklenen son eleman yığının en üstündedir.
Eklemek gibi, öğeler de bir uçtan, yani yığının üstünden kaldırılır. Öğeleri kaldırmak için bir 'pop' işlemi kullanılır. Bu nedenle, pop () çağırırsanız, yığının en üstündeki öğe kaldırılacaktır.
Yukarıdaki çıktıda, 2, 4, 6,8,10 elemanını ekliyoruz ve sonra 10'un kaldırılması için pop () 'u çağırıyoruz.
Sıra Arayüzü
Kuyruk arayüzünden türetilen koleksiyonlar ilk giren ilk çıkar (FIFO) sırasını takip eder. Öğeler bir uca yerleştirilir ve diğer uçtan çıkarılır. Bu nedenle, ilk girilen öğe, ilk kaldırılan öğe olur.
Aşağıda, sorgu arayüzünü destekleyen koleksiyonlar verilmiştir.
- PriorityQueue
- ve Arayüz
- ArrayDeque
Bunların her birini kısaca tartışalım.
# 1) PriorityQueue
PriorityQueue koleksiyonunda, depolanan öğeler önceliklerine göre işlenir. Öncelik kuyruğunda boş değerler depolayamazsınız.
Öncelik kuyruğunun genel tanımı aşağıdaki gibidir:
Queue q1 = new PriorityQueue();
Aşağıdaki program öncelik kuyruğunu uygular.
import java.util.*; public class Main { public static void main(String args()) { PriorityQueue color_queue=new PriorityQueue(); color_queue.add('red'); color_queue.add('green'); color_queue.add('blue'); color_queue.add('cyan'); color_queue.add('magenta'); color_queue.add('yellow'); System.out.println('Priority Queue elements:'); System.out.println('head:'+color_queue.peek()); System.out.println('Other elements in Priority Queue:'); Iterator itr=color_queue.iterator(); while(itr.hasNext()) { System.out.print(itr.next() + ' '); } System.out.println('
'); color_queue.remove(); System.out.println('After removing element, new head:'+color_queue.element()); System.out.println('
'); color_queue.poll(); System.out.println('After removing another element, Priority Queue :'); Iterator itr2=color_queue.iterator(); while(itr2.hasNext()) { System.out.print(itr2.next() + ' '); } } }
Çıktı:
Bir kez daha renkleri öncelik sırasının öğeleri olarak kullanıyoruz. Yukarıdaki programda, sıraya eleman eklemek ve bir elemanı sırayla kaldırmak için add ve remove yöntemlerini kullandık. Öncelik kuyruğunda işaret ettiği bir öğeyi döndüren peek () yöntemini kullanıyoruz.
Son olarak bir yineleyici kullanarak, öncelik sırasının öğeleri görüntülenir.
# 2) dokunmatik arayüz
Deque veya 'çift uçlu kuyruk', öğeleri her iki uçtan eklemenize ve kaldırmanıza olanak tanıyan bir veri yapısıdır. Java toplama çerçevesindeki kuyruk arabirimini genişleten deque arabirimi.
Deque işlevini sağlar ve ondan miras alan bir 'ArrayDeque' sınıfına sahiptir.
# 3) ArrayDeque
ArrayDeque, sekme arabirimini uygular.
ArrayDeque'in genel tanımı aşağıdaki gibidir:
Deque d = new ArrayDeque();
ArrayDeque, Deque'in işlevselliğini kullanmanıza izin verir. ArrayList veya yığın gibi diğer koleksiyonlardan farklı olarak, ArrayDeque'in kapasitesi üzerinde herhangi bir kısıtlama yoktur.
android için cep telefonu casus uygulaması
Aşağıdaki örnek, ArrayDeque uygulamasını gösterir.
import java.util.*; public class Main { public static void main(String() args) { //Creating Deque and adding elements Deque deque = new ArrayDeque (); deque.add(10); deque.add(20); deque.add(30); System.out.println('Deque Elements:'); //Traversing elements for (Integer num : deque) { System.out.println(num); } } }
Çıktı:
Yukarıdaki programda, integer türünde bir ArrayDeque koleksiyonu tanımlıyoruz ve add yöntemini kullanarak buna tamsayı elemanları ekliyoruz. Koleksiyon daha sonra for construct kullanılarak geçilir.
Arayüzü Ayarla
Set arabirimi java.util paketinin bir parçasıdır ve koleksiyon arabiriminden genişler. Set, koleksiyonun yinelenen değerlere ve birden fazla boş değere sahip olmasına izin vermeyen bir yapıdır.
Aşağıdaki sınıflar set arayüzünü uygular.
- HashSet
- LinkedHashSet
- Ağaç Kümesi
# 1) HashSet
Set arabirimini uygulayan HashSet koleksiyonu, içinde depolanan farklı değerlere sahiptir. Bu koleksiyon, öğeleri depolamak için hashing tekniğini ve öğeleri depolamak için hash tablosunu kullanır.
T HashSet koleksiyonunun genel tanımı aşağıda gösterilmiştir.
Set s1 = new HashSet();
HashSet uygulamasını aşağıdaki programda verdik.
import java.util.*; public class Main { public static void main(String args()) { //Create HashSet set_subjects HashSet set_subjects=new HashSet(); System.out.println('Elements in the given hashsetset_subjects are:'); set_subjects.add('Maths'); set_subjects.add('Computers'); set_subjects.add('English'); set_subjects.add('French'); //Traverse the hashset Iterator itr=set_subjects.iterator(); while(itr.hasNext()) { System.out.println(itr.next()); } } }
Çıktı:
Yukarıdaki programda, konuların bir HashSet koleksiyonu oluşturuyoruz ve ardından koleksiyondaki öğeleri görüntülemek için bir yineleyici kullanarak onu geziyoruz.
# 2) LinkedHashSet
LinkedHashSet bir set arabirimi uygular ve HashSet'i genişletir (koleksiyon hiyerarşisine bakın). LinkedHashSet, arabirim Setinin bağlantılı liste temsilidir. LinkedHashSet benzersiz öğeler içerir, ancak boş değerlere izin verir.
LinkedHashSet'in genel tanımı aşağıda verilmiştir.
Set s2 = new LinkedHashSet();
LinkedHashSet uygulaması aşağıda verilmiştir.
import java.util.*; public class Main { public static void main(String args()) { LinkedHashSet set_subjects=new LinkedHashSet(); System.out.println('Elements in the LinkedHashSet set_subjects:'); set_subjects.add('Maths'); set_subjects.add('Computers'); set_subjects.add('English'); set_subjects.add('Sanskrit'); Iterator itr=set_subjects.iterator(); while(itr.hasNext()) { System.out.println(itr.next()); } } }
Çıktı:
Bir kez daha Linkedhashset oluşturmak için kitap başlıklarını kullanıyoruz. Çıktıdan da görebileceğiniz gibi, ekleme sırası linkedHashSet tarafından tutulur.
SortedSet Arayüzü
SortedSet arayüzü, öğelerin eksiksiz bir şekilde sıralanmasını sağlar. Öğelerin doğal bir şekilde sıralanmasını sağlayan yöntemler içerir. Koleksiyondaki SortedSet arabirimini uygulayan öğeler artan sırada düzenlenir.
TreeSet sınıfı, SortedSet arabirimini uygulayan örneklerden biridir.
Treeset
Treeset'in genel tanımı aşağıdaki gibidir:
Set s3 = new TreeSet();
TreeSet, SortedSet arabirimini uygular ve benzersiz öğeler içerir. Depolama ve erişim oldukça hızlıdır ve ardından öğeler artan sırada düzenlenir.
import java.util.*; public class Main{ public static void main(String args()) { //create a treeset of integers TreeSet set_oddnums=new TreeSet (); set_oddnums.add(1); set_oddnums.add(3); set_oddnums.add(5); set_oddnums.add(7); set_oddnums.add(9); System.out.println('Elements in TreeSet are:'); //traverse the treeset using iterator Iterator itr=set_oddnums.iterator(); while(itr.hasNext()) { System.out.print(itr.next() + ' '); } } }
Çıktı:
Yukarıdaki programda, toplama yöntemlerini kullanarak tek sayıları oluşturduk ve koleksiyona ekledik. Sonra bir yineleyici kullanarak koleksiyondaki öğeleri çıkarırız.
Java Koleksiyonları Çerçevesinin Avantajları
- Azaltılmış programlama: Koleksiyonlar çerçevesi, programcıların verimli bir program yazmasına izin verebilecek yöntemleri içeren tüm arayüzler ve sınıflarla birlikte gelir. Bu şekilde programcının çok fazla programlamaya odaklanmasına gerek kalmaz.
- Tutarlı yöntemler ve API: Tüm sınıfların verilere göre hareket eden ortak yöntemleri vardır. Bu API'ler sınıflar boyunca tutarlıdır ve programcının her sınıf için çok fazla farklı yönteme sahip olma konusunda endişelenmesine gerek yoktur.
- Hızı ve doğruluğu artırın: Toplama çerçevesi veri yapılarını ve koleksiyonlarını uygulamak için tam işlevsellik sağladığından, bir toplama çerçevesi kullanarak yüksek verimli programlar ve ayrıca daha hızlı ve doğru programlar yazabilirsiniz.
- Yazılımın yeniden kullanımını kolaylaştırır: Java toplama çerçevesinin veri yapıları ve algoritmaları yeniden kullanılabilir.
- İlişkili olmayan API'ler arasında birlikte çalışabilirlik: Koleksiyon API'leri, ilgisiz API'ler arasında bile birlikte çalışabilirliğe izin verir.
- Yeni API'ler tasarlamak için daha az çaba: Programcılar standart koleksiyon API'lerini kullanabilir ve buna göre yeni API'ler tasarlayabilir. Tamamen yeni API'ler yazmak için uğraşmaları gerekmiyor.
Sıkça Sorulan Sorular
# 1) Java'da bir koleksiyon çerçevesinin kullanımı nedir?
Cevap: Koleksiyon çerçevesi, programcıların verileri depolayabilen ve işleyebilen yüksek verimli programlar yazmasına olanak tanıyan önceden paketlenmiş algoritmalar, arabirimler ve sınıflar sunar.
# 2) Koleksiyon neden bir çerçevedir?
Cevap: Çerçeve, sınıfların, arayüzlerin ve algoritmaların yeniden kullanılabilir bir koleksiyonudur. Toplama çerçevesi ayrıca, bu sınıflar üzerinde çalışan veri yapısı sınıfları ve algoritmalarının yeniden kullanılabilir bir koleksiyonudur.
# 3) Java'da Java Collections API'si nedir?
Cevap: Java koleksiyonları API'si, koleksiyonlardan başka bir şey olmayan veri yapılarını kullanmak için genişletilebilen ve uygulanabilen arayüzler ve sınıflar sağlar.
# 4) Java'da koleksiyon ve koleksiyonlar arasındaki fark nedir?
Cevap: Koleksiyon, koleksiyon çerçevesinde temel bir arayüz iken 'koleksiyonlar' bir sınıftır. Her ikisi de java.util paketinin bir parçasıdır.
**** Java Collections Framework hakkında daha fazla ayrıntı ve örnek: ****
Liste, Küme ve Sıra arasında karşılaştırma:
Liste | Ayarlamak | Kuyruk |
---|---|---|
Kampanya siparişi korunur | Ekleme sırası, Karma kümesinde tutulmuyor | Ekleme sırası korunur. |
Yinelenen öğeler içerebilir | Yinelenen öğeler içeremez | Yinelenen öğeler içerebilir. |
Dizinin eklenmesi ve kaldırılması herhangi bir indeks için yapılabilir. | Belirtilen öğeyi kaldırın. | Yalnızca son eklenen öğe dışarı çıkarılabilir. Ayrıca, elemanların yerleştirilmesi sonunda gerçekleşir. |
Dizi Listesi Sınıfı
Dizide bellek ayırma sabittir. Ancak ArrayList'te bellek dinamik olarak tahsis edilebilir. Bu ArrayList sınıfı, ekleme sırasını korur ve yinelenen öğeler ekleyebilirsiniz.
Dizi Listesi için demo programı:
public class ArrayListDemo { public static void main(String() args) { ArrayList li = new ArrayList (); li.add(1); li.add(2); li.add(3); li.remove(0); for (Integer temp : li) { System.out.println(temp); } System.out.println('=========='); ArrayList l = new ArrayList(); l.add('text1'); l.add('text2'); l.add('text3'); for (String temp : l) { System.out.println(temp); } System.out.println('=========='); ArrayList al=new ArrayList(); al.add(1); al.add(2); al.forEach((a)->;System.out.println(a)); } }
LinkedList Sınıfı
Bağlantılı Liste veri yapısı düğümler içerir ve bu düğüm iki bölüm içerir:
- Veri
- Sonraki öğeye referans
İlk düğüm ayrı bir düğüm değildir. Sadece referansı içerir ve bir kafa olarak adlandırılır. Son düğüm boştur.
Demo Programı:
public class LinkedListDemo { public static void main(String() args) { LinkedList list =new LinkedList(); list.add(22); list.add(44); list.add(46); list.add(46); list.add(46); for(Integer temp:list) { System.out.println(temp); } Iterator it =list.iterator(); while(it.hasNext()) { System.out.println(it.next()); } System.out.println('=========='); for (int i=0;i
Kuyruk
Kuyruk ilk giren ilk çıkar (FIFO) veri yapısıdır. Remove yöntemini çağırırsanız, her zaman ilk eklenen öğe kuyruktan kaldırılacaktır. Bu nedenle, Kuyruk, verilerin girilen sırayla alınması gereken gerçek zamanlı uygulamada kullanılır.
Örnek Program:
public class QueueDemo { public static void main(String() args) { PriorityQueue pq=new PriorityQueue(); pq.add(1); pq.add(2); pq.add(3); pq.add(4); pq.add(5); pq.add(6); pq.add(7); for(int temp : pq) { System.out.println(temp); } pq.remove(); System.out.println('queue after removing a element'); System.out.println(pq); } }
Ayarlamak
Set koleksiyonu, yinelenen öğelere izin vermez. Veri koleksiyonunu çoğaltma olmadan işlemek istediğinizde ve ekleme sırasını korumaya gerek olmadığında, set veri yapısı kullanabilirsiniz.
Demo Programı:
public class demohashset { public static void main (String() args){ HashSet hs=new HashSet(); hs.add(23); hs.add(24); hs.add(25); hs.add(26); hs.add(27); hs.add(28); hs.add(293); hs.add(203); hs.add(263); hs.add(243); hs.add(243); (int temp:hs) { System.out.println(temp); } hs.remove(24); hs.remove(23); System.out.println('==============='); System.out.println('after removing a element ::::'); System.out.println('==============='); hs.forEach((temp)->System.out.println(temp)); ; } }
MAP Arayüzü
- Anahtar ve değer çiftiyle öğelerin işlem koleksiyonunu istediğinizde, harita anahtarları değerlerle eşleyebilen bir nesne olduğundan eşleme veri yapısını kullanabilirsiniz.
- Bir harita, yinelenen anahtarlar içeremez.
- Haritanın önemli uygulamaları HashMap, Treemap, LinkedHashMap, HashTable'dır.
HashMap, Treemap, LinkedHashMap ve HashTable arasındaki fark:
HashMap Ağaç Haritası LinkedHashmap HashTable Boş anahtarlara ve değerlere izin verilir Yalnızca boş değerlere izin verilir. Boş anahtarlara ve değerlere izin verilir. Boş anahtarlara ve değerlere izin vermez. Senkronize değil Senkronize değil Senkronize değil senkronize Yinelemede düzeni sağlamanın garantisi yoktur Sıralama, doğal sıraya göre yapılacaktır. Kampanya siparişi korunacak Kampanya siparişi korunmadı.
Demo Programı:
public class HashMapDemo { public static void main(String() args) { HashMap m=new HashMap(); m.put(1, 'one'); m.put(2, 'two'); m.put(3, 'three'); m.put(4, 'four'); m.put(null, 'one'); m.put(null, null); System.out.println(m); TreeMap tm =new TreeMap(); tm.put('R', 'red'); tm.put('B', null); tm.put('G', 'green'); System.out.println(tm); Hashtable ht =new Hashtable(); ht.put(1, 'one'); ht.put(2, 'two'); ht.put(3, 'three'); ht.put(4, 'four'); System.out.println(ht); } }
Dikkat edilmesi gereken önemli noktalar:
- List, Queue, set arayüzleri koleksiyon arayüzünü genişletir ve bu koleksiyon arayüzünün add, remove vb. Gibi ortak yöntemleri vardır.
- Ekleme sırası listede tutulur ve bir küme yinelenen öğeler içeremez. Sıra, İlk Giren İlk Çıkar veri yapısıdır.
- Harita, anahtar ve değer çiftleri içerecektir. HashMap, Treemap, Hashtable, Linked HashMap, harita arayüzünün önemli uygulamasıdır.
Sonuç
Bu eğitim bize Java Koleksiyonları Çerçevesine bir giriş yaptı. Java koleksiyon çerçevesinin bir parçası olan tüm sınıflara ve arayüzlere kısaca değindik.
Bu dizideki sonraki eğitimlerimizde, bu sınıfların ve arayüzlerin her biri hakkında ayrıntılı olarak bilgi edineceğiz.
Yaklaşan eğitimimizde JAVA'daki Yansımalar hakkında daha fazla bilgi edinebilirsiniz !!!
PREV Eğitimi | SONRAKİ Eğitici
Önerilen Kaynaklar
- Örneklerle Java Yansıtma Eğitimi
- Yeni Başlayanlar İçin Derinlemesine Eclipse Eğiticileri
- Java SWING Eğitimi: Konteyner, Bileşenler ve Olay İşleme
- Yeni Başlayanlar İçin JAVA Eğitimi: 100+ Uygulamalı Java Video Eğitimi
- Java'da Erişim Değiştiriciler - Örneklerle Eğitim
- String Buffer ve String Builder Eğitimi ile Java String
- Java Programlama Diline Giriş - Video Eğitimi
- Salatalık Selenium Eğitimi: Salatalık Java Selenium WebDriver Entegrasyonu