1. Anasayfa
  2. Java

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


3

Bu yazı ile Java Collection 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 Collection 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 List, kuyruk işlemleri için (listeye girme sırasına göre listeden çıkma) Queue ve her bir verinin yalnızca bir defa olmasının istenildiği durumlar için ise Set 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

Vector, ArrayList ve LinkedList sınıflarıdır. Vektor ve ArrayList 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. Stack 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

HashSet 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 TreeMap’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ı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

Bu İçeriğe Tepkin Ne Oldu?
  • 7
    harika_
    Harika!!
  • 1
    be_enmedim
    Beğenmedim
  • 3
    _ok_iyi
    Çok iyi
  • 4
    sevdim_
    Sevdim!
  • 1
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

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.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

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?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir