1. Ana Sayfa
  2. Java
  3. Java Collection Framework Nedir? Framework Bileşenleri – Ne İşe Yarar? Peki, Amacı?

Java Collection Framework Nedir? Framework Bileşenleri – Ne İşe Yarar? Peki, Amacı?

Bu yazı ile Framework konusunda bazı bilgileri sizler paylaşmak amacındayım. Kaç bölümlük bir yazı dizisi olacağını şimdiden çıkartmam oldukça güç fakat yazdıkça MSHOWTO’da sizler ile paylaşıyor olacağım. İlk bölümde Java Framework’ün bileşenlerine değinelim.

Java Collection Framework 1 – GİRİŞ

Benzer verileri grup halinde tutmak ve onlar üzerinde işlem yapmak tipik bir yazılım problemi olarak karşımıza sürekli çıkar. Örneğin bir sınıftaki öğrencilerin listesini oluşturmak, bir iskambil oyununda iskambil kartlarını karıştırmak, dağıtmak, sıralamak gibi. Java Collection Framework bu tip problemleri Amerika’yı yeniden keşfetmeden çok kolay bir şekilde çözmemizi sağlar.

Collection nesnesi kelime anlamından da anlaşılabileceği gibi içerisinde başka nesneleri barındıran bir nesnedir. Java programlama dilinde Collection bir interface olup, içerisinde benzer türden nesneleri belirli şekilde (liste halinde, sıralı, tek olacak şekilde gibi) tutacak nesnelerin en temel davranışlarını belirler. Bu en temel davranışlar beklenildiği gibi ekle, çıkar, boş mu gibi temel Collection ihtiyaçlarıdır. Java dilinde yazarsak Collection add, addAll, remove, clear, isEmpty gibi metodlar sunar.

Herbir Collection’da olması gereken bu özelliklere verilerin kullanım amaçlarına özelleşmiş farklı interface tanımları türetme yoluyla eklenir. Verilerin bir liste halinde tutulması için , kuyruk işlemleri için (listeye girme sırasına göre listeden çıkma) ve her bir verinin yalnızca bir defa olmasının istenildiği durumlar için ise interface’i vardır. Burada Map için ayrı bir parantez açmak gerekir. Çünkü map anahtar, değer eşleştirmesi ile verileri tutan özel bir yapıdır ve Collection interface’i ile bağlantılı değildir fakat Java Collection Framework’unun çok kullanılan bir parçasıdır.

Bu interface’leri uygulayan (implements) somut sınıflar ile Java Collection Framework tamamlanır. Somut sınıflar verilerin kullanım ihtiyacına göre gerekli her şeyi yapabilen hazır kodlardır.

List interface’ini uygulayan sınıflar

, ve sınıflarıdır. Vektor ve arasında ki tek fark Vektor farklı Thread’lerde güvenle çalışabilir. LinkedList sınıfı ise özel bir sınıftır. Şekil 1.den görüleceği gibi hem List hem de Queue interface’ini uygulayan bir sınıftır, dolayısıyla her iki amaçla kullanılabilir. sınıfı Vektor sınıfından türemiştir ve klasik yığın işlemleri için kullanılır.

Set interface’ini uygulayan sınıflar

hash algoritmaları kullanırken, TreeSet ikili ağaç yapısı kullanır.

Queue interface’ini uygulayan sınıflar

PriorityQueue öncelik durumuna göre kuyruk işlemi yapabilen bir sınıftır. LinkedList her yeni gelen veriyi bir öncekine bağlayarak kuyruk oluşturur

Map interface’ini uygulayan sınıflar

Daha önce bahsedildiği gibi Map interface’i Collection’dan türemez. Kendi başına bir interface olup anahtar, değer eşleştirmesi ile verilerin tutulmasını sağlar. Kullandıkları algoritmalara göre Map sınıfları, HashMap, HashTable, LinkedHashMap ve ’dir.

Özetle Collection sınıfları 4 türdür.

  • Nesneleri liste halinde tutan List sınıfları
    • Vector, ArrayList, LinkedList, Stack
  • Nesneleri tek olacak şekilde tutan Set sınıfları
    • HashSet, TreeSet
  • Nesneleri eklenme sırasına göre düzenleyen Queue sınıfları
    • PriorityQueue, LinkedList
  • Nesneleri tek bir anahtarla eşleştiren Map sınıfları
    • HashMap, HashTable, LinkedHashMap, TreeMap.

Bir sonraki yazıda List sınıflarıyla devam edeceğiz.

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

Yorum Yap

Yazar Hakkında

Lisans eğitimini Yıldız Teknik Üniversitesi Elektronik ve Haberleşme Mühendisliğinde tamamladı. İTÜ Biyomedikal Mühendisliğinden ve Bahçeşehir Üniversitesi Mühendislik Yönetiminden Yüksek Lisans derecelerini aldı. Telekominikasyon sektörünün öncü firmalarından Netaş’da yazılım mimarı olarak çalışmaktadır. Okan Üniversitesinde 2 yıl Java’ya Giriş ve Dağıtık Yazılım Uygulamaları derslerini verdi.

Yorum Yap

Yorumlar (3)

  1. Çok güzel bir yazı serisi olmuş, site genel olarak zaten çok güzel. Sormak istediğim bir şey var. Linked List vs ArrayList desem nasıl bir karşılaştırma yaparsınız? Projelerimizde hangisini kullanmamızı önerirsiniz?