List Interface’i, collection interface’ten türemiştir. ArrayList, Linkedlist ve vector sınıfları bu interface üzerinden türer. Yani ArrayList, Linkedlist ve Vector sınıflarında List interface’indeki fonksiyonlar farklı şekillerde gerçeklenmiştir. Ayrıca kendimiz de bu interface üzerinden yeni bir sınıf üretebiliriz.
Doğal olarak List referansı ile, tüm bu sınıflara ait nesneleri de tutabiliriz.
ArrayList’i daha önce incelemiştik. Örnek bir kodla tekrar edelim
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> dizi=new ArrayList<>(5){ { add(1); add(2); add(3); } }; System.out.println(dizi.get(0) + dizi.get(1) + dizi.get(2)); System.out.println(dizi.get(0) +" "+ dizi.get(1) +" "+ dizi.get(2)); System.out.println(dizi); List<String> str= new ArrayList<>(List.of("İlhan", "Furkan", "Sadikoglu")); //böyle de ilklendirilebilir. System.out.println(str); } } |
Lİst interface’ine Collection interface’inden gelen fonksiyonlar dışında neler eklendiğine bakalım.
Dönüş tipi fonksiyon | İşlev |
E get(int index) | Girilen index’teki elemanı döndürür. |
int indexOf(Object o) | Verilen elemanın index’ini bulur. |
Iterator<E> iterator() | İterator oluşturur. |
int lastIndexOf(Object o) | Girilen elemanı sondan arar ve ilk bulunan indexi döndürür. |
ListIterator<E> listIterator() | İterator listesi döndürür. |
ListIterator<E> listIterator(int index) | Lİstesi girilen elemandan başlatır. |
E remove(int index) | Girilen index’teki elemanı siler. |
boolean remove(Object o) | Girilen elemanı listede arar ve ilk bulduğunu siler |
boolean removeAll(Collection<?> c) | Girilen konteyner’daki tim elemanları arar ve siler. |
boolean retainAll(Collection<?> c) | Yollanan konteyner’da bulunmayan tüm elemanları siler. |
E set(int index, E element) | Girilen index’teki elemanı değiştirir. |
Kaynakça: https://docs.oracle.com/javase/7/docs/api/java/util/List.html
Comperable Interface
Kendi oluşturduğumuz bir sınıfın nesnelerini tutan bir List’te sort fonksiyonunu kullanabilmek için, comperable interface’ini implement etmemiz gerekir.
Bu interface’deki compareTo() fonksiyonunu implement edersek, artık Collections.sort(dizi); diyerek dizimizi sort’layabiliriz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | import java.util.*; class Sehir implements Comparable<Sehir>{ private String isim; private int plaka; public Sehir(String isim, int plaka) { this.isim = isim; this.plaka = plaka; } public String toString() { return "Şehir: "+isim+" plaka: "+plaka; } @Override //Compare metodu bir Integer döndürmelidir. //İki nesne eşitse 0 döndürür. //Girilen nesne büyükse negatif sayı döner //Girilen nesne küçükse pozitif sayı döner. //Plaka'ya göre karşılaştırıyor. public int compareTo(Sehir o) { return this.plaka-o.plaka; } } public class Main { public static void main(String[] args) { Sehir manisa=new Sehir("Manisa",45); Sehir istanbul=new Sehir("Istanbul",34); Sehir izmir=new Sehir("Izmir",35); Sehir giresun=new Sehir("Giresun",28); if(manisa.compareTo(istanbul)>0){ System.out.println("Plakası önce gelen "+istanbul); } else System.out.println("Plakası önce gelen "+manisa); List<Sehir> sehirler=new ArrayList<Sehir>(); sehirler.add(manisa); sehirler.add(istanbul); sehirler.add(izmir); sehirler.add(giresun); System.out.println("\nSıralanmadan önce:\n"+ sehirler); Collections.sort(sehirler); System.out.println("\nSıralandıktan sonra:\n"+ sehirler); } } |