25
1 Ders İçeriği • Liste Tanım ve Operasyonları Soyut veri yapısı (ADT) Tanım & fonksiyonlar Liste Gerçekleştirimi: ArrayList JAVA Koleksiyon API (Collections API) Tekrarlayıcı (Iterator) Uygulama – Java ile ArrayList Gerçekleştirimi

Ders İçeriği

Embed Size (px)

DESCRIPTION

Ders İçeriği. List e Tanım ve Operasyonları Soyut veri yapısı (ADT) Tanım & fonksiyonlar Li ste Gerçekleştirimi : ArrayList JAVA Koleksiyon API (Collections API) Tekrarlayıcı (Iterator) Uygulama – Java ile ArrayList Gerçekleştirimi. List e(List) - Tanım. Liste ? - PowerPoint PPT Presentation

Citation preview

Page 1: Ders İçeriği

1

Ders İçeriği

• Liste– Tanım ve Operasyonları

• Soyut veri yapısı (ADT)– Tanım & fonksiyonlar

• Liste Gerçekleştirimi: ArrayList

• JAVA Koleksiyon API (Collections API)– Tekrarlayıcı (Iterator)

• Uygulama – Java ile ArrayList Gerçekleştirimi

Page 2: Ders İçeriği

2

Liste(List) - Tanım• Liste ?

– A1, A2, …, An şeklinde eleman dizisi.– Elemanlar rastgele olabilir, fakat aynı tüde olmalı

( hepsi tamsayı (int), hepsi ondalık sayı (double) vb)

• Örnek 5 elemanlı liste (indis 0-4 arasında)– 2, 6, 1, 2, 3

• 2’nin indisi 0• 6’nın indisi 1• 1’in indisi 2• 2’nin indisi 3• 3’ün indisi 4

Page 3: Ders İçeriği

3

Liste Operasyonları: ekleme• Listenin sonuna yeni eleman ekleme

– 4, 6, 1, 4, 5 ekle(8) 4, 6, 1, 4, 5, 8

• Elemanı listenin herhangi bir pozisyonuna ekleme– 4, 6, 1, 4, 5 ekle(2, 9) 4, 6, 9, 1, 4, 5

Page 4: Ders İçeriği

4

Liste Operasyonları: silme• Listede olan bir elemanı silme

– 4, 6, 1, 4, 5 sil(2) 4, 6, 4, 5– 4, 6, 1, 4, 5 sil(0) 6, 1, 4, 5– 4, 6, 1, 4, 5 sil(1) 4, 1, 4, 5– 4, 6, 1, 4, 5 sil(4) 4, 6, 1, 4

Page 5: Ders İçeriği

5

Liste Operasyonları: indis & sonIndis

• indis yordamı listedeki ilk eşleşen elemanın indisini döndürür.– 4, 6, 1, 4, 5 indis(6) – 4, 6, 1, 4, 5 indis(5) – 4, 6, 1, 4, 5 indis(4)

• sonIndis yordamı ise listedeki eşleşen son elemanın indisini döndürür– 4, 6, 1, 4, 5 sonIndis(1) – 4, 6, 1, 4, 5 sonIndis(4)

1

4

0

2

3

Page 6: Ders İçeriği

6

Liste Operasyonları: get & set• get yordamı parametre olarak verilen

indisteki değeri döndürür.– 4, 6, 1, 4, 5 get(1) 6– 4, 6, 1, 4, 5 get(3) 4– 4, 6, 1, 4, 5 get(0) 4

• set yordamı verilen indisteki değeri verilen değere atar.– 4, 6, 1, 4, 5 set(1, 9) 4, 9, 1, 4, 5– 4, 6, 1, 4, 5 set(3, 5) 4, 9, 1, 5, 5– 4, 6, 1, 4, 5 set(4, 7) 4, 9, 1, 4, 7

Page 7: Ders İçeriği

7

Soyut Veri Tipleri(Abstract Data Type - ADT)

• Şimdiye kadar Soyut veri tiplerinin (ADT) operasyonlarına baktık.– Operasyonlarda ADT’nin nasıl davrandığı

gösterildi, fakat nasıl gerçekleştirildiği konusuna değinilmedi.

– Çoğu zaman ADT’yi gerçekleştirmek için birden fazla yol vardır.

Page 8: Ders İçeriği

8

Soyut Veri Tipleri (ADT) - devam• Soyut veri tipleri operasyonları olan veri

yapısıdır.

özellik (ADT durum)……

İşlemler (ADT Yordamları)

islem1(…)islem2(…)islem3(…)………

Page 9: Ders İçeriği

9

Listeclass Liste { …

void add(int e); // sona ekle void add(int pos, int e); // belirli pozisyona ekle void remove(int pos); // sil int indexOf(int e); // baştan arama int lastIndexOf(int e); // sondan arama bool clear(); // Tüm elemanları sil bool isEmpty(); // liste boş mu? int first(); // ilk eleman int last(); // son eleman int get(int pos); // belirli pozisyondaki değer int size(); // listedeki eleman sayısı}

Page 10: Ders İçeriği

10

Liste KullanımıPublic static void main(String[] args){ List list = new List(); // boş bir liste oluştur

list.add(10); // 10 list.add(5); // 10, 5 list.add(1, 7); // 10, 7, 5 list.add(2, 9); // 10, 7, 9, 5

list.indexOf(7); // 1 döndürür list.get(3); // 5 döndürür list.remove(1); // 10, 9, 5 list.size(); // 3 döndürür list.isEmpty(); // false döndürür

list.remove(0); // 9, 5 list.clear(); // boş liste delete list; // Liste nesnesini sil }/* bitti-main */

Page 11: Ders İçeriği

11

Liste: Gerçekleştirim• İki tür gerçekleştirim vardır:

– Dizi tabanlı– Bağlantılı liste

• ADT operasyonlarının farklı gerçekleştirimlerinin çalışma zamanını karşılaştıralım.

Page 12: Ders İçeriği

Liste:Dizi tabanlı gerçekleştirim• Temel fikir:

– Büyük bir dizi için yer açın (MAX)– N ile ilk boş yeri tutun– N = 0 ise liste boş– Silme veya ekleme işleminde elemanları

kaydırın.

0 1 2 ……… N-1 MAX

A_1 A_2 A_3 ……… A_N-1

3

A_4

Page 13: Ders İçeriği

13

ArrayList – Java

class ArrayList { private int kapasite; private int elemSayisi; private int[] items;

ArrayList (); //Yapıcı y.

void add(int pos, int e); void remove(int pos); int indexOf(int e); bool isEmpty(); int first(); int last(); int get(int pos); int size();}

ArrayList ADT

// Yapıcı yordam: // Boş liste oluşturpublic ArrayList(){ int[] items = new int[4]; kapasite = 4; elemSayisi = 0;} // bitti-ArrayList

Page 14: Ders İçeriği

Liste Operasyonları : add• add(pizisyon P, ElemanTürü E)

– Örnek: add(2, X): X’i 2 nolu pozisyona ekle

• Temel Fikir: Yeni elemanı eklemek için elemanları 1 birim sağa kaydır.

• X eklendikten sonraki görüntü. • Çalışma zamanı: O(N)

0 1 2 ……… N-1 MAX

A_1 A_2 A_3 ……… A_N

3

A_4

0 1 2 ……… N-1 MAX

A_1 A_2 X ……… A_N-1

N

A_N

3

A_3

Page 15: Ders İçeriği

Add – Dolu Dizi • Eğer dizi doluysa ne yapılabilir?

– Hata döndürülebilir.• Tercih edilmez.

– Genel olarak aşağıdakiler yapılır:(1) Daha büyük bir dizi oluştur (genellikle kapasite 2 kat

arttırılır)(2) Eski dizideki tüm elemanları yeni diziye kopyala(3) Eski diziyi sil(4) Yeni diziyi kullanmaya başla

– Bu dinamik dizi gerçekleştiriminde ayrıca kapasiteyi de kontrol altında tutulması gerekmektedir.

Page 16: Ders İçeriği

Liste Operasyonları: silme• remove(pozisyon P)

– Örnek: remove(1): 1 nolu pozisyondaki elamanı sil

• Temel fikir: Elemanı sil ve elemanları sola bir adım kaydır.

• Listenin son durumu. Çalışma zamanı: O(N)

0 1 2 ……… N-1 MAX

A_1 A_2 A_3 ……… A_N

3

A_4

0 1 2 ……… N-2 MAX

A_1 A_3 A_4 ……… A_N

N-13

A_5

Page 17: Ders İçeriği

Liste Operasyonları: indexOf• indexOf(elemanTürü E)

– Örnek: indexOf(X): Listede X’i arama

• Doğrusal arama yapılmalı– Çalışma zamanı: O(N)

0 1 2 ……… N-1 MAX

A_1 A_2 A_3 ……… A_N

3

A_4

Page 18: Ders İçeriği

Liste Operasyonları: isEmpty• isEmpty()

– Eğer liste boşsa true döndür– Eğer liste doluysa false döndür

• Eğer N == 0 ise true döndür– Çalışma zamanı: O(1)

0 1 2 ……… N-1 MAX_SIZE

A_1 A_2 A_3 ……… A_N

3

A_4

Page 19: Ders İçeriği

Lists Operations: first, last, get• first(): Return A[0]• last(): Return A[N-1]• get(pozisyon K): Return A[K]

• first – Running time: O(1)• last – Running time: O(1)• get – Running time: O(1)

0 1 2 ……… N-1 MAX_SIZE

A_1 A_2 A_3 ……… A_N

3

A_4

Page 20: Ders İçeriği

JAVA Koleksiyon (Collection) API

• Veri yapıları: veri üzerinde izin verilen verilerin ve operasyonların gösterilmesidir.

• Genel veri yapıları verileri toplar ve bu veriler üzerinde ekleme, silme, erişme gibi işlemlere izin verir.

• JAVA Collections API arayüzü genel veri yapılarını ve bu veri yapıları üzerinde genel işlemleri destekler.

20

Page 21: Ders İçeriği

JAVA Koleksiyon(Collections) API

21

Set

SortedSet

AbstractSet

Collection

TreeSet

HashSet

List AbstractList

AbstractSequentialList

ArrayList

LinkedList

AbstractCollection

Vector Stack

LinkedHashSet

Interfaces Abstract Classes Concrete Classes

Queue AbstractQueue

Deque

PriorityQueue

Page 22: Ders İçeriği

JAVA Koleksiyon(Collections) API

22

Page 23: Ders İçeriği

Tekrarlayıcı (Iterator)• Ö.ğ. ArrayList elemanları ekrana

yazdırma.– liste nesnesinin ArrayList olduğu

düşünülürse for(int i=0 ; i < liste.size() ; i++) System.out.println( liste.get(i) );

• Burada i iterasyon nesnemiz.– Çünkü, tekrarı kontrol eden nesnemiz.

23

Page 24: Ders İçeriği

Tekrarlayıcı (Iterator)• Dizideki elemanları ekrana yazdırma.

Iterator i = liste.iterator();

while( i.hasNext() )System.out.println( i.next() );

24

Page 25: Ders İçeriği

Uygulama• ArrayList sınıfı gerçekleştirimi• Aşağıdaki yordamları yazınız.

– 5 kapasiteli dizi oluşturan yapıcı yordam– void add(int e); – void add(int pos, int e); //isteğe bağlı– void remove(int pos); //isteğe bağlı– int indexOf(int e); – int lastIndexOf(int e);– bool clear(); //isteğe bağlı– bool isEmpty(); – int first(); – int last(); – int get(int pos); – int size(); 25