Microsoft PowerPoint - 13 Java`da Haz\375r Veri

advertisement
Java’da Hazır Veri Yapıları ve
Koleksiyonlar (Collections)
Doç. Dr. Aybars UĞUR
Koleksiyon (Collection)
Collection (koleksiyon), diğer verileri tutabilen veri yapısıdır.
Koleksiyon arayüzleri (collection interfaces), her tür
koleksiyonda yapılabilecek işlemleri tanımlar. Koleksiyon
gerçekleştirimleri (collection implementations), bu işlemleri
çeşitli yollarla gerçekleştirir. Bazı arayüzler : Set, List, Map
olup Java.util paketi içindedirler.
VERİ YAPILARI : 13 Java'da Hazır Veri Yapıları ve Koleksiyonlar
2
Koleksiyon Arayüzleri
Liste (List) : Sıralı bir tür koleksiyondur. Tekrarlı elemanları
içerebilir. Listeler 0. elemandan başlar. Koleksiyondan
devraldığı özellikler dışında, indislerine göre elemanları
işleme (sort,...), eleman arama (binarySearch) ve elemanlar
üzerinde dolaşma gibi metotları (ListIterator) da vardır.
Liste arayüzü, “ArrayList”, “LinkedList” ve “Vector”
sınıfları ile gerçekleştirilir. “ArrayList” sınıfı, boyutu
değiştirilebilen dizidir ve “Vector” sınıfından hızlı çalışır.
“LinkedList” sınıfı ise bağlı liste gerçekleştirimidir. Çok
sayıda metot devralmaktadırlar. Çift bağlı liste, kuyruk, yığıt
(yığıt için Java’da ayrıca sınıf da vardır) vs. de
gerçekleştirilebilmektedir.
VERİ YAPILARI : 13 Java'da Hazır Veri Yapıları ve Koleksiyonlar
3
Koleksiyon Arayüzleri
Küme (Set) : Küme, elemanları tek (tekrar olmadan) tutan
koleksiyon tipinde veri yapısıdır. İki önemli Küme
gerçekleştirimi : HashSet ve TreeSet’tir. HashSet,
elemanlarını “Hash” tablosunda tutar, TreeSet ise ağaçta
tutar.
VERİ YAPILARI : 13 Java'da Hazır Veri Yapıları ve Koleksiyonlar
4
Hazır Sıralama ve İkili Arama
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
tfoutput.setText(""+ind);
setSize(200,150); show();
}
public class bsearch extends JFrame
{
public bsearch()
{
super("BSearch Ornek");
public static void main ( String args[] )
{
bsearch app = new bsearch();
app.addWindowListener
(
new WindowAdapter()
Container c = getContentPane();
{
c.setLayout(new FlowLayout());
public void windowClosing(WindowEvent e)
final JTextField tfoutput = new JTextField(10);
{
c.add(tfoutput);
System.exit(0);
}
Dizi sıralandıktan
(sort metodu ile) sonra
// float, char, ... için de yapılabilir.
}
1,2,4,6,7,8,9,11,15
int a[] = { 4,2,1,8,6,7,9,15,11 };
);
içinde (binarySearch
metodu ile) 4 değeri aranmaktadır.
Arrays.sort(a);
} konumu (2) metin kutusuna yazdırılır.
Dizi içindeki
int ind = Arrays.binarySearch(a,4);
}
VERİ YAPILARI : 13 Java'da Hazır Veri Yapıları ve Koleksiyonlar
5
SortedSetTest ve TreeSet
import java.util.*;
public class SortedSetTest {
private static String names[] = {
"yellow","green",
"black","tan","grey","white","orange","
red","green" };
public SortedSetTest()
{
TreeSet m = new
TreeSet(Arrays.asList(names));
System.out.println("Set: ");
printSet(m);
System.out.print("orange'dan öncekiler :");
printSet(m.headSet("orange"));
System.out.print("orange'dan sonrakiler:");
printSet(m.tailSet("orange"));
System.out.println("İlk eleman
:"+m.first());
System.out.println("Son eleman
:"+m.last());
}
public void printSet(SortedSet setRef)
{
Iterator i = setRef.iterator();
while(i.hasNext())
System.out.print(i.next()+" ");
System.out.println();
}
public static void main(String args[])
{ new SortedSetTest(); }
}
Ekran Çıktısı :
Set:
black green grey orange red tan white yellow
orange'dan öncekiler :black green grey
orange'dan sonrakiler:orange red tan white yellow
İlk eleman :black
Son eleman :yellow
VERİ YAPILARI : 13 Java'da Hazır Veri Yapıları ve Koleksiyonlar
6
Download