1 / 25

Ders İçeriği

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 ?

nelle-olson
Télécharger la présentation

Ders İçeriği

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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

  2. Liste(List) - Tanım • Liste ? • A1, A2, …, An şeklinde eleman dizisi. • Elemanlar rastgele olabilir, fakat aynı tüde olmalı ( hepsitamsayı (int), hepsi ondalık sayı (double)vb) • Örnek5 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

  3. ListeOperasyonları: 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

  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

  5. Liste Operasyonları: indis & sonIndis • indisyordamı 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) • sonIndisyordamı 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

  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 • setyordamı 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

  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.

  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(…) … … …

  9. Liste class Liste{ … void add(int e); // sona ekle void add(int pos, int e); // belirli pozisyona ekle void remove(int pos); // sil intindexOf(int e); // baştan arama intlastIndexOf(int e); // sondan arama boolclear(); // Tüm elemanları sil boolisEmpty(); // liste boş mu? intfirst(); // ilk eleman intlast(); // son eleman intget(int pos); // belirli pozisyondaki değer intsize(); // listedeki eleman sayısı }

  10. Liste Kullanımı Publicstaticvoid main(String[] args){ Listlist = 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 */

  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.

  12. 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. 3 ……… 0 1 2 N-1 MAX A_4 ……… A_1 A_2 A_3 A_N-1

  13. ArrayList – Java ArrayList ADT classArrayList{ privateintkapasite; privateintelemSayisi; privateint[]items; // Yapıcı yordam: // Boş liste oluştur publicArrayList(){ int[] items = new int[4]; kapasite = 4; elemSayisi = 0; } // bitti-ArrayList ArrayList ();//Yapıcı y. void add(int pos, int e); void remove(int pos); intindexOf(int e); boolisEmpty(); intfirst(); intlast(); intget(int pos); intsize(); }

  14. 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) 3 ……… 0 1 2 N-1 MAX A_4 ……… A_1 A_2 A_3 A_N 0 1 2 N-1 N 3 ……… MAX A_1 A_2 X A_N-1 A_N A_3 ………

  15. 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: • Daha büyük bir dizi oluştur (genellikle kapasite 2 kat arttırılır) • Eski dizideki tüm elemanları yeni diziye kopyala • Eski diziyi sil • Yeni diziyi kullanmaya başla • Bu dinamik dizi gerçekleştiriminde ayrıca kapasiteyi de kontrol altında tutulması gerekmektedir.

  16. ListeOperasyonları: 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) 3 ……… 0 1 2 N-1 MAX A_4 ……… A_1 A_2 A_3 A_N 0 1 2 N-2 N-1 3 ……… MAX A_1 A_3 A_4 A_N A_5 ………

  17. Liste Operasyonları: indexOf • indexOf(elemanTürü E) • Örnek: indexOf(X): Listede X’i arama • Doğrusal arama yapılmalı • Çalışma zamanı: O(N) 3 ……… 0 1 2 N-1 MAX A_4 ……… A_1 A_2 A_3 A_N

  18. 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) 3 ……… 0 1 2 N-1 MAX_SIZE A_4 ……… A_1 A_2 A_3 A_N

  19. 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) 3 ……… 0 1 2 N-1 MAX_SIZE A_4 ……… A_1 A_2 A_3 A_N

  20. 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.

  21. JAVA Koleksiyon(Collections) API

  22. JAVA Koleksiyon(Collections) API

  23. 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 iterasyonnesnemiz. • Çünkü, tekrarı kontrol eden nesnemiz.

  24. Tekrarlayıcı (Iterator) • Dizideki elemanları ekrana yazdırma. Iterator i = liste.iterator(); while( i.hasNext() ) System.out.println( i.next() );

  25. 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(intpos, int e); //isteğe bağlı • void remove(intpos); //isteğe bağlı • intindexOf(int e); • intlastIndexOf(int e); • boolclear(); //isteğe bağlı • boolisEmpty(); • intfirst(); • intlast(); • intget(intpos); • intsize();

More Related