7 Ekim 2010 Perşembe

Collections ( Java'da Koleksiyonlar )

Bazı durumlarda dizi içinde tutacağımız elemanın sayısı ve tipi çalışma anında belirli hale gelebilir. Bu tip durumlarda koleksiyon sınıfları kullanılmaktadır.
Set:
TreeSet: Elemanlar red-black tree yapısında, değerlerine göre sıralı tutulur.
HashSet: Elemanlar bir hash tablosunda tutulur.
LinkedHashSet: Hash tablosunu linked list şeklinde tutar.

Biz HashSet'i küçük bir programla örneklendirelim.
import java.util.HashSet;
import java.util.Set;

public class SetExample {
public static void main(String[] args) {
String[] elemanlar = { "Java", "is", "Java", "language", "programming","is" };
Set< string > kume = new HashSet< string >();
for (String el : elemanlar){
if (!kume.add(el)) {
System.out.println("eleman iki kez giriliyor:" + el);
}
}
System.out.println(kume.size()+" farkli eleman eklendi"); 
}
}

Programın çıktısı aşağıdaki gibidir.





List:
ArrayList: Elemanlar eklendikçe kapasitesi artan dizi şeklinde tutulur.
Linked List: Elemanlar bağlı liste şeklinde tutulur.

ArrayList'e bir örnek verecek olursak;

import java.util.ArrayList;
public class ArrayListOrnek {
public static void main(String[] args) {
String[] lis = {"A","B","C","C","D","E","F","G"};
ArrayList< string > liste = new ArrayList< string >();
for (String s : lis) {
liste.add(s);
}
System.out.println(liste);
}
}

Programın çıktısı aşağıdaki gibidir.





Queue:
FIFO(First in First out) yapısındadır. Yani ilk giren ilk çıkar.

Kuyruğu(queue) bir programla örneklendirecek olursak;
import java.util.PriorityQueue;
import java.util.Queue;

public class QueueOrnek {
public static void main(String[] args) {
Queue< integer > kuyruk = new PriorityQueue< integer >();
kuyruk.add(new Integer(1));
kuyruk.add(new Integer(2));
kuyruk.add(new Integer(3));
kuyruk.add(new Integer(4));

System.out.println(kuyruk.poll()); 
System.out.println(kuyruk.poll());
System.out.println(kuyruk.poll());
System.out.println("Size="+kuyruk.size()); 
}
}
Programın çıktısı aşağıdaki gibidir.



Map:
Tree Map: Anahtar-değer ikilisini red black tree yapısında tutar.
HashMap: Elemanları hashtable yapısında tutar.
LinkedHashMap: Anahtar-değer ikilisini linked list yapısında
tutar.

HashMap yapısıyla ilgili bir program örneği gösterelim.
import java.util.HashMap;
import java.util.Map;

public class MapOrnek {
public static void main(String[] args) {
String[] kelimeler = {"İstanbul","İstanbul","Ankara",
"Çanakkale","İzmir","Java","İzmir","Java","İstanbul"};
Map< string, integer="" > m = new HashMap< string, integer="" >();
for (String kelime : kelimeler) {
Integer sayi = m.get(kelime);
m.put(kelime, (sayi==null)?1:sayi+1);
}
System.out.println(m.size()+" farkli kelime");
System.out.println(m); 
}
}


Programın çıktısı aşağıdaki gibidir.

0 yorum:

Yorum Gönder