Class LinkedList java.lang.object java.util.abstractcollection java.util.abstractlist java.util.abstractsequentiallist java.util.



Benzer belgeler
ArrayList(int initialcapacity) Sığası (capacity) parametrenin belirlediği sayıda olan bir dizi oluşturur.

Yığıtın en üstündeki öğeyi değer olarak alır; ama onu yığıttan almaz, yerinde bırakır.

ArrayList Uygulamaları

Queue (kuyruk) Arayüzü

Class Vector. Class Vector java.lang.object java.util.abstractcollection java.util.abstractlist java.util.vector. Kılgıladığı arayüzler:

Class HashSet. Metotlar. Class HashSet java.lang.object java.util.abstractcollection java.util.abstractset java.util.hashset

Đlgili konular: Collection, Set, HashSet, Comparable, Comparator, TreeMap, Collections.synchronizedSortedSet(SortedSet), Serialized Form

Class PriorityQueue. Class PriorityQueue<E> java.lang.object java.util.abstractcollection<e> java.util.abstractqueue<e> java.util.

Interface Comparator. Kılgılayan sınıf: Collator. Bildirimi: public interface Comparator

I Java Veri Yapıları 1

Class LinkedHashMap. Class LinkedHashMap java.lang.object java.util.abstractmap java.util.hashmap java.util.linkedhashmap. Kılgıladığı arayüzler:

Kılgıladığı arayüzler: Serializable, Cloneable, Map<K,V>, NavigableMap<K,V>, SortedMap<K,V>

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR

Binary Search. (Yarılama) Bölüm Dizide Bir Öğe Arama

Görsel Programlama DERS 04. Görsel Programlama - Ders04/ 1

Kılgılayan Sınıflar: AbstractMap, Attributes, HashMap, Hashtable, IdentityHashMap, RenderingHints, TreeMap, WeakHashMap

Class HashMap. Class HashMap java.lang.object java.util.abstractmap java.util.hashmap. Kılgıladığı Arayüzler: Cloneable, Map, Serializable

Nesneler için torbalar (Collections) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 1

İST 264 VERİ YAPILARI Bitirme Sınavı A Grubu

İlgili Konular: Object.equals(java.lang.Object), Object.hashCode(), rehash(), Collection, Map, HashMap, TreeMap, Serialized Form

YZM 2116 Veri Yapıları

Class LinkedHashSet. Class LinkedHashSet java.lang.object java.util.abstractcollection java.util.abstractset java.util.hashset java.util.

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

YMT219 VERİ YAPILARI ÖDEV-1

BAĞLAÇLI LİSTELER LINKED LISTS

VERİ YAPILARI DERS NOTLARI BÖLÜM 5 QUEUE (KUYRUK) Yard. Doç. Dr. Deniz KILINÇ

BAĞLAÇLI LİSTELER LINKED LISTS

Yigin & Kuyruk {\} /\ Suhap SAHIN Onur GÖK

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

YIĞINLAR YIĞINLAR. Yığın İşlemleri Postfix, Prefix, Infix. G. Ü. Bilgisayar Mühendisliği Bölümü

Java. Mustafa OF. Kocaeli Üniversitesi Kocaeli Meslek Yüksekokulu (Mart 2007)

YZM 2116 Veri Yapıları

VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ

Bilgisayar Programcılığı. Ögr. Gör. Cansu AYVAZ GÜVEN

Veri Yapıları ve Algoritmalar dönem

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

VERİ YAPILARI DERS NOTLARI BÖLÜM 4 STACK (YIĞIN, YIĞIT) Yard. Doç. Dr. Deniz KILINÇ

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Mantıksal İşlemler. 7.1 true, false, nil

Görsel Programlama (Visual Programming)

KUYRUKLAR. Doç. Dr. Aybars UĞUR

public class SalesLineItem // Java { private int quantity; private ProductSpecification description; public Money getsubtotal() {...

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

Java Koleksiyonları (Java Collections)

Şablon Türler (Generics)

YZM 2116 Veri Yapıları

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Arasınav Örnek Soruları Bahar 2018

Stack Islemleri. Postfix ve Infix notasyonlari. Stack ozellikleri

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

HASH(KARMA) TABLOSU VERİ YAPISI

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 2 DERSİ LAB. ÖDEVİ

CharArrayReader. Kılgıladığı Arayüzler: Bildirimi: Değişkenleri (fields): java.io.reader Sınıfından Kalıtsal Gelen Değişken:

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

Bire-bir Sahiplik İlişkisi ile İlgili Sorular:

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

Balon & Banka Teslim tarihi: 17 Kasım 2008

NESNEYE DAYALI PROGRAMLAMA 11. HAFTA UYGULAMA DERSİ

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Koleksiyonlar (Collections)

BİL132 Bilgisayar Programlama II

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

Döngüler. Tablo 15.1: Ruby de Başlıca Döngü Yapıları

Mantıksal (Logic) Operatörler

Veri Yapıları ve Algoritmalar dönem

Programlama Dilleri 3

MOBİL UYGULAMA GELİŞTİRME

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Insertion Sort. (Sokuşturma Sıralaması)

TEMPLATES. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

Operator Aşırı Yükleme (Operator OverLoading)

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

YZM 2116 Veri Yapıları

(Sözlük, dictionary, birleşik array, map)

Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları

Ruby. Prof.Dr.Timur Karaçay Başkent Üniversitesi

Chain of Responsibility Tasarım Şablonu KurumsalJava.com

BİL-141 Bilgisayar Programlama I (Java)

VERİ TABANI İŞLEMLERİ (NESNE TABANLI PROGRAMLAMA TEKNİĞİ İLE)

Yrd. Doç. Dr. Caner ÖZCAN

BMH-303 Nesneye Yönelik Programlama

static void dizi_24() { Random rnd = new Random(); int [] tutulan=new int[10]; int dogru;

Android Ders Notları

Merge (Bireşim) Algoritmayı önce bir örnek üzerinde açıklayalım.

Aşağıdaki programı inceleyip ekrana ne yazacağını söyleyebilir misiniz?

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

YZM VERİ YAPILARI DERS#9: HASH FONKSİYONLARI

YZM 2116 Veri Yapıları

CBÜ Teknoloji Fakültesi, Yazılım Mühendisliği. Nesneye Yönelik Programlama

Java Class Yapısında Finalize Metotunun Kullanımı

ByteArrayOutputStream

YIĞIT STACK. Yrd. Doç. Dr. Aybars UĞUR

NESNEYE YÖNELİK PROGRAMLAMA

Transkript:

LinkedList java.util Class LinkedList java.lang.object java.util.abstractcollection java.util.abstractlist java.util.abstractsequentiallist java.util.linkedlist LinkedList sınıfı List arayüzünü kılgılar (implemantation). Dolayısıyla listelerle ilgili bütün metotları kılgılamış olur ve null dahil bütün öğelere izin verir. Özellikle get(), remove() ve insert() metotlarını listenin başına, sonuna veya ortasında bir yere uygulayabilir. Böylece bağlı listelerden, isteğe göre, stack (yığın -LIFO), queue (kuyruk -FIFO), deque (çifte sonlanmış kuyruk) yapıları elde edilebilir. Java da LinkedList sınıfı hem tek-bağlı hem iki-bağlı listeleri kılgılama yeteneğine sahiptir. Aşağıdaki örnekler, LinkedList sınıfı ile yapılabilen işlerden bazılarını göstermektedir. LİnkedLİst sınıfının iki tane kurucusu vardır: LinkedList() Boş bir bağlı-liste yaratır. LinkedList(Collection c) Parametrenin belirlediği koleksiyonu içeren bir bağlı-liste yaratır. Öğelerin sırası koleksiyonun iteratör ünün (tekrarlayıcı) belirlediği sıradır. LinkedList Sınıfının Metotları void add(int index, Object element) Listede indisi belirtilen yere öğe sokuşturur (insert). O indisten sonraki öğelerin konumları birer geriye kayar. boolean add(object o) Parametrede verilen nesneyi listenin sonuna ekler. boolean addall(collection c) Parametrede verilen koleksiyonun bütün öğelerini listenin sonuna ekler. Ekleme sırası koleksiyonun iteratörü nün belirlediği sıradadır. boolean addall(int index, Collection c) Belirtilen index ten başlayarak verilen koleksiyonu listeye yerleştirir. 1

void addfirst(object o) Parametrede verilen nesneyi listenin başına ekler. void addlast(object o) Parametrede verilen nesneyi listenin sonuna ekler. void clear() Listedeki bütün öğeleri siler; boş liste haline getirir. Object clone() Returns a shallow copy of this LinkedList. boolean contains(object o) Parametrede belirtilen nesne listede varsa true değerini alır. Object get(int index) İndisi belirtilen öğeyi listeden seçer. Object getfirst() Listenin ilk öğesini verir. Object getlast() Listenin son öğesini verir. int indexof(object o) Parametrede verilen nesnenin listedeki indisini verir. Nesne listede yoksa -1 değerini verir. int lastindexof(object o) Parametrede verilen nesnenin listedeki son indisini verir. Nesne listede yoksa -1 değerini verir. ListIterator listiterator(int index) Belirtilen indisten başlayarak öğelerin list-iteratörünü verir. Object remove(int index) İndisi verilen öğeyi listeden siler. boolean remove(object o) Verilen nesneyi ilk karşılaştığı konumundan siler. Object removefirst() Listenin ilk öğesini siler; değeri o öğedir. Object removelast() Listenin son öğesini siler; metodun değeri silinen öğedir. Object set(int index, Object element) Verilen nesneyi istenen indisli öğenin yerine koyar. int size() Listedeki öğe sayısını verir. 2

Object[] toarray() Listedeki öğeleri, aynı sırada bir arraye dönüştürür. Object[] toarray(object[] a) Listedeki öğeleri, aynı sırada bir arraye dönüştürür. Runtime arrayi belirtilen arraydir. LinkedList sınıfının metotları yardımıyla çok çeşitli listeler yapılabilir. Bu listeler arasında yığıt (stack), kuyruk (queue), çembersel bağlı listeler, iki yönlü bağlı listeler ve çok bağlı listeler vardır. Yığıt ve kuyruk tipi listeler, bilgisayar programcılığında özel öneme sahiptirler.başka bir deyişle, LinkedList yapıları daha geneldir; yığıt ve kuyruk yapıları onun özel halleridir. Ancak, uygulamalarının çok olması nedeniyle, yığıt ve kuyruk listeleri için öğe ekleme ve öğe silme işlerini yapan özel metotlar vardır. O metotları ayrı altbölümlerde ele alacağız. Ancak, bu bölümde add(), addfirst(), getfirst() ve getlast() metotlarıyla yığıt ve kuyruk oluşturulabileceğini göreceğiz. Örneklere başlamadan önce şu bilgiyi anımsamakta yarar vardır. Bir listede, yeni öğeler daima listenin sonuna ekleniyor ve silinen öğeler daima listenin sonundan siliniyorsa, bu liste bir yığıt (stack) olur. Bu tür listelere FILO ( firstinput-last-output, ilk giren son çıkar) listesi denilir. Tabii, deyimi LIFO (lastinput-first-output, son giren ilk çıkar) biçiminde de ifade edebiliriz. Bu liste, üst üste yığılmış nesneler gibidir. En üste konulan nesne ilk alınabilecek olandır. Tersine olarak, bir listede, yeni öğeler daima listenin sonuna ekleniyor, ancak silinen öğeler daima listenin önünden siliniyorsa, bu liste bir kuyruk (queue) olur. Bu tür listelere FIFO ( first-inputfirst-output, ilk giren ilk çıkar) listesi denilir. Tabii, deyimi LILO (last-input-last-output, son giren son çıkar) biçiminde de ifade edebiliriz. Bu liste, bir gişe kuyruğuna benzer. Kuyruğa ilk giren gişedeki işini ilk bitirip ayrılan kişi olur. Aşağıdaki program, listenin sonuna öğe ekleyerek özünde bir kuyruk yaratıyor. Ama bir LinkedList olduğu için, listenin önünden veya sonundan öğe silebiliyor. 3

Örnek 1: Aşağıdaki program list adında bir LinkedList listesi yaratıyor. Liste Portakal Bergamot sırasında bir kuyruktur (queue). İlk gelen kuyruğun önüne, son gelen kuyruğun sonuna konuşlanıyor. package koleksiyon; public class Koleksiyon { LinkedList list = new LinkedList(); list.add("portakal"); list.add("limon"); list.add("mandalina"); list.add("turunç"); list.add("mandalina"); list.add("bergamot"); System.out.println("list = " + list); list.add(3, "Greyfurt"); System.out.println("list = " + list); System.out.println("ilk öğe = " + list.getfirst()); System.out.println("son öğe = " + list.getlast()); System.out.println("silinen = " + list.removefirst()); System.out.println("silinen = " + list.removelast()); System.out.println("list = " + list); list = [Portakal, Limon, Mandalina, Turunç, Mandalina, Bergamot] list = [Portakal, Limon, Mandalina, Greyfurt, Turunç, Mandalina, Bergamot] ilk öğe = Portakal son öğe = Bergamot silinen = Portakal silinen = Bergamot list = [Limon, Mandalina, Greyfurt, Turunç, Mandalina] Bu program list adlı bir ArrayList yaratıyor, add() metodu ile onun terimlerine Portakal, Limon, Mandalina, Turunç, Mandalina, Bergamot öğelerini atıyor ve o terimleri yazdırıyor. list.add(3, "Greyfurt") metodu, listeye Greyfurt nesnesini sokuşturuyor ve bu nesneyi 3 indeksli öğe haline getiriyor. Listenin öteki öğeleri birer konum geriye kayıyor. Bu adımda liste, yeni öğelerle birlikte tekrar yazılıyor. list.getfirst() metodu, listenin ilk öğesi olan Portakal değerini veriyor. list.getlast() metodu, listenin son öğesi olan Bergamot değerini veriyor. list.removefirst() metodu, listenin ilk öğesi olan Portakal nesnesini listeden siliyor. Silinen öğe metodun verdiği değerdir. list.removelast() metodu, listenin son öğesi olan Bergamot nesnesini listeden siliyor. Silinen öğe metodun verdiği değerdir. 4

Aşağıdaki program liste adında bir LinkedList listesi yaratıyor. Liste, özünde Viyana Londra sırasında bir yığıt (stack) yapısıdır. İlk gelen kuyruğun önüne, son gelen kuyruğun sonuna konuşlanıyor. Önceki örneğin aksine, bu örnekte, ilk gelen listenin sonuna, son gelen listenin önüne konuşlanıyor. Ancak, LinkedList metotları bu listenin herhangi bir yerine öğe ekleme veya öğe silmeye olanak tanır. Örnek 2: package koleksiyon; public class Koleksiyon { LinkedList liste = new LinkedList(); liste.addfirst("londra"); liste.addfirst("moskova"); liste.addfirst("ankara"); liste.addfirst("paris"); liste.addfirst("viyana"); System.out.println(liste); liste.removelast(); liste.removelast(); System.out.println(liste); System.out.println("liste = " + liste); liste.add(2, "Tahran"); liste.addlast("bağdat"); System.out.println("liste = " + liste); System.out.println("ilk öğe = " + liste.getfirst()); System.out.println("son öğe = " + liste.getlast()); System.out.println("var mı? = " + liste.contains("kahire")); liste.clear(); System.out.println("liste = " + liste); [Viyana, Paris, Ankara, Moskova, Londra] [Viyana, Paris, Ankara] liste = [Viyana, Paris, Ankara] liste = [Viyana, Paris, Tahran, Ankara, Bağdat] ilk öğe = Viyana son öğe = Bağdat var mı? = false liste = [] Bu program liste adlı bir ArrayList yaratıyor, addfirst() metodu ile onun terimlerine Viyana, Paris, Ankara, Moskova, Londra öğelerini atıyor ve o terimleri yazdırıyor. liste.removelast() metodu, listenin son öğesi olan Londra nesnesini listeden siliyor. Metot tekrar çağrılıyor, bu lez listenin son öğesi olan Moskova nesnesini listeden siliyor. Silinen öğe metodun verdiği değerdir. 5

Bu adımda, silinenler nedeniyle oluşan yeni tekrar yazdırılıyor. liste.add(2, "Tahran") metodu, Tahran nesnesini indisi 2 olan konuma sokuşturuyor. Sonraki öğeler kuyruğun sonuna doğru birer konum kayıyor. liste.addlast("bağdat") metodu kuyruğun sonuna Bağdat nesnesini ekliyor. liste.getfirst() metodu, listenin ilk öğesi olan Viyana değerini veriyor. liste.getlast() metodu, listenin son öğesi olan Bağdat değerini veriyor. liste.contains("kahire") metodu false değeri ile Kahire nesnesinin listeta olmadığını söylüyor. liste.clear() metodu, listenin tüm öğelerini silip boş bir liste haline getiriyor. Aşağıdaki program list adında bir LinkedList listesi yaratıyor. Liste Orhan Kemal Aziz Nesin sırasında bir kuyruk (queue) yapısıdır. Bu örnekte, ilk gelen kuyruğun önünde, son gelen kuyruğun soonunda konuşlanıyor. Örnek 3: public class LinkedList02 { List list = new LinkedList(); list.add("orhan Kemal"); list.add("melih Cevdet Anday"); list.add("aziz Nesin"); Iterator iter = list.iterator(); for (int i = 0; i < 3; i++) System.out.println(iter.next()); Orhan Kemal Melih Cevdet Anday Aziz Nesin Bu program Iterator yardımıyla Listeyi taramakta ve öğelerini yazdırmaktadır. Aşağıdaki program list adında bir LinkedList listesi yaratıyor. Öğe eklemek için push() metodunu, öğe silmek için pop() metodunu tanımlıyor. For döngüsü ile listenin önüne 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 öğelerini ekliyor. Liste 0 9 sırasında bir kuyruk (queue) yapısıdır. Örnek 4: 6

// Making a stack from a LinkedList. public class LinkedList01 { private LinkedList list = new LinkedList(); public void push(object v) { list.addfirst(v); public Object top() { return list.getfirst(); public Object pop() { return list.removefirst(); LinkedList01 stack = new LinkedList01(); for (int i = 0; i < 10; i++) stack.push(new Integer(i)); 9 9 8 System.out.println(stack.top()); System.out.println(stack.pop()); System.out.println(stack.top()); 7