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

Benzer belgeler
Bir c sınıfının doğal sıralaması ile tutarlı olması (be consistent with equals) demek, c sınıfı içindeki her e1 ve e2 nesnesi için

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

ArrayList Uygulamaları

I Java Veri Yapıları 1

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

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

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

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

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

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

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

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

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

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.

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

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

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

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

Karşılaştırma İşlemleri ve Koşullu İfadeler

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

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

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

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

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

Java Koleksiyonları (Java Collections)

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

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

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

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

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

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

KUYRUKLAR. Doç. Dr. Aybars UĞUR

Şablon Türler (Generics)

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;

Spring Framework Eğitimi

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

BİL-141 Bilgisayar Programlama I (Java)

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

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

JAVADA DİZİ İŞLEMLERİ

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

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

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

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Sınıf üyeleri: değişkenler (fields) and metotlar (methods) Değişkenler: nesne içerisindeki değişkenlerdir Temel veri tipi veya sınıf tipi

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

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

Java Programlama Dilinde Veri Tipleri. Yrd. Doç. Dr. Aybars UĞUR

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Merge Sort Bireşen Sıralama

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

Nesneye Dayalı Programlama

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

Nesne Yönelimli Programlama

Chain of Responsibility Tasarım Şablonu KurumsalJava.com

public static int Toplam int x, int y

Programlama Dilleri 3

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

OPERATÖRLER Alıştırmalar

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

Arayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır.

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

MOBİL UYGULAMA GELİŞTİRME

Java da, tüm değişkenlerin kullanılmadan önce tanımlanması edilmesi gerekir. Bir değişken tanımlamanın temel gösterimi bu şekildedir:

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

YZM 2116 Veri Yapıları

// hataları işaret eden referans

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

PAKET ERİŞİMLERİ SINIFLARIN YENİDEN KULLANIMI. BMU-112 Algoritma ve Programlama-II Yrd. Doç.Dr. İlhan AYDIN

Metotlar. d e f metot_adı [ ( [ arg [= d e f a u l t ] ]... [, arg [, &expr ] ] ) ] deyim ( l e r ) end

EMT2226 Nesne Yönelimli Programlamaya Giriş

BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI

Temel JavaFX Bileşenleri (2) TextField, ScrollPane, TreeView ve TableView,

İki Yöntem. Komposizyon (Composition) Kalıtım (Inheritance)

SIRALAMA SORTING. Yrd. Doç. Dr. Aybars UĞUR

Mantıksal (Logic) Operatörler

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

Sınıfların Tekrardan Kullanılması. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 1

Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar

Yazılım Kodlama ve İ simlendirme Standartları v1.0

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

BİL-141 Bilgisayar Programlama I (Java)

Aritmetik Operatörleri Hemen her programlama dilinde olduğu gibi java dilinde de aritmetik işlemler yaparken aşağıdaki operatörleri kullanırız:

HASH(KARMA) TABLOSU VERİ YAPISI

Veri Yapıları ve Algoritmalar dönem

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

JavaTürk. Java Kod İsimlendirme ve Şekil Standardı

YZM 2105 Nesneye Yönelik Programlama

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Business Delegate Tasarım Şablonu KurumsalJava.com

SIRALAMA SORTING. Doç. Dr. Aybars UĞUR

BASİT VERİ TÜRLERİ, STRİNGLER, VE KONSOL GİRİŞ/ÇIKIŞ

String (Dizgi) İşlemleri

/*int sayi1, sayi2,toplam=0;

Transkript:

Interface Comparator java.util Interface Comparator Kılgılayan sınıf: Collator Bildirimi: public interface Comparator Comparator arayüzü Java Collections Framework un bir üyesidir. Bir nesneler koleksiyonu üzerinde tümel sıralama (total ordering) yapar. Bunu yaparken Collections.sort() metodunu kullanabilir. Bu metot, collections içindeki sınıflara ait nesnelerden oluşan koleksiyonları doğal sıraya koyar. Doğal sıralama, örneğin sayılar için küçüklükbüyüklük sırasıdır. Stringler için sözlük sıralamasıdır (lexigeographic order). Ayrıca, TreeSet ya da TreeMap gibi veri yapılarında da doğal sıralama yapar. Ele alınan nesneler koleksiyonu için bir doğal sıralama yoksa ya da doğal sıralamadan farklı bir sıralama yapılmak isteniyorsa, Collections.sort() metodu kullanılamaz. O durumda, arayüzde olan compare(object o1, Object o2) metodu kullanılır. Tabii, bu metot bir üst sınıfta tanımlanmamışsa, ele alınan sınıfta tanımlanması gerekir. Bir S kümesi üzerinde Comparator c nin koyduğu sıranın eşitlik ile tutarlı olması (be consistent with equals) demek, S kümesi içindeki her e1 ve e2 için (compare((object)e1, (Object)e2)==0) e1.equals((object)e2) deyimlerinin aynı boolean değerlerine sahip olması demektir; yani her ikisi aynı zamanda false ya da her ikisi aynı zamanda true değer almalıdır. Eşitlik ile tutarlı olmayan bir sıralama yapan comparator ile oluşturulan bir SortedSet ya da SortedMap yapıları beklenmedik davranışlar gösterebilirler. O nedenle, serileşebilen yapılar kurmak için java.io.serializable kullanılmalıdır. Đlgili konular: Comparable, Arrays.sort(Object[], Comparator), TreeMap, TreeSet, SortedMap, SortedSet, Serializable Comparator Arayüzünün Metotları int compare(object o1, Object o2) Đki öğeyi mukayese eder. boolean equals(object obj) Verilen nesnenin belirtilen nesneye eşit olup olmadığını belirler. 1

java.util.comparator Aşağıdaki program Float tipi nesneleri sort() metodu ile doğal sıraya diziyor. import java.util.*; public class ComparatorDemo implements Comparable { List list = new ArrayList(); list.add(new Float(34.3)); list.add(new Float(13.7)); list.add(new Float(25.8)); list.add(new Float(66.0)); Collections.sort(list); System.out.println("Doğal Sıralama:"); System.out.println("Sıralama : " + list); Doğal Sıralama: Sıralama : [13.7, 25.8, 34.3, 66.0] public class ComparatorDemo { * Đlkel (primitive) double sayıları mukayese etmek için * compare(double d1, double d2) static metodunu kullanırız. * d1 < d2 ise negatif, d1 = d2 ise 0, * d1 > d2 ise pozitif değer alır. double d1 = 5.35; double d2 = 5.34; int i1 = Double.compare(d1, d2); System.out.println(Double.compare(d1, d2)); System.out.println(Double.compare(d2, d1)); * Nesne (object) olarak Double sayıları mukayese * etmek için * int D1.compareTo(Double D2) metodunu kullanırız. * D1 < D2 ise negatif, D1 = D2 ise 0, * D1 > D2 ise pozitif değer alır. Double dobj1 = new Double("5.35"); Double dobj2 = new Double("5.34"); int i2 = dobj1.compareto(dobj2); System.out.println(dObj1.compareTo(dObj2)); System.out.println(dObj2.compareTo(dObj1)); 2

1-1 1-1 Aşağıdaki program Double tipi nesneleri sort() metodu ile doğal sıraya diziyor. import java.util.*; public class ComparatorDemo implements Comparable { List list = new ArrayList(); list.add(new Double(34.3)); list.add(new Double(13.7)); list.add(new Double(25.8)); list.add(new Double(66.0)); Collections.sort(list); System.out.println("Doğal Sıralama:"); System.out.println("Sıralama : " + list); Doğal Sıralama: Sıralama : [13.7, 25.8, 34.3, 66.0] int compare(object o1, Object o2) Metodu Comparator<T> arayüzüne ait olan bu metot, nesneleri mukayese eder. Nesneler arasında mukayese olgusu gerçekleşince, Collections.sort(koleksiyon, sıralama) metodu ile sıralanabilirler. Bunun için aşağıdaki amaçlara uygun Comparator nesnesi yaratılır. Çoklu Mukayese: Bir sınıfa ait nesneler içindeki veri alanlarına göre, nesneleri sıralamak mümkündür. Örnein bir personel sınıfına ait nesneler, soyad, yaş, sicilno gibi değişkenlere göre sıraya konulabilirler. Sistem Sınıfları: Bazı sınıflara ait doğal sıralamadan farklı sıralama işlemleri yapılabilir. Örneğin, String tipi nesnelerin doğal sırası sözlük sıralamasıdır. Ancak, onları, örneğin, uzunluklarına göre sıralamak isteyebiliriz. Eğer ele alınan sınıfın nesneleri arasında doğal bir sıralama varsa, çoğunlukla onu kullanırız, dolayısıyla bir compare(,) metodu tanımlamaya gerek duymayız. Ama doğal sıralama yok ya da farklı bir sıralama istiyorsak, compare(,) metodunu tanımlarız. Tabii, bu metot Object sınıfına aittir ve 3

mukayeseyi == operatörü gibi yapar. O nedenle, kendi sınıfımızda compare(.) metodu tanımlanınca Object sınıfındaki override edilmiş olur. Aşağıdaki program Integer tipinden bir ArrayList yaratıyor ve onu Collections.sort() metodu ile sıralıyor. Bu işlemde programcı bir comparator tanımlamıyor. Ancak Integer sınıfı Comparable arayüzünü kılgılar. Bu arayüz kendisini kılgılayan her sınıfta tümel sıralama (total ordering) yaratır. Bu sıralamaya sınıfın doğal sıralaması (natural ordering) denilir. Arayüzü kılgılayan her sınıfta compareto(object o) metodu ilgili sınıfın öğelerini ikişer ikişer birbirleriyle karşılaştırır. Buna doğal mukayese metodu denilir. Comparable arayüzünü kılgılayan listeler, Collections.sort metodu ile arrayler ise Arrays.sort metodu ile otomatik olarak sıraya konulur. Dolayısyla, Comparable arayüzünü kılgılayan nesneler SortedMap yapısında anahtar olarak, SortedSet yapısında ise öğeler olarak kullanılabilirler. Bunu yaparken bir comparator tanımlamaya gerek yoktur. x.compareto(y) deyimi x ile y nesnelerini mukayese eder. x < y ise ifade 1 değerini, x = y ise 0 değerini ve x > y ise 1 değerini alır. package comparator; import java.util.arraylist; import java.util.collections; import java.util.list; public class ComparatorDemo01 { List<Integer> list = new ArrayList<Integer>(); list.add(5); list.add(4); list.add(3); list.add(7); list.add(2); list.add(1); Collections.sort(list); for (Integer k : list) { System.out.print("\t" + k); 1 2 3 4 5 7 Koleksiyonda bir doğal sıralama yoksa ya da koleksiyon doğal sırasından başka türlü sıralanmak istenirse, istenen sıralamayı yapan bir metot tanımlanabilir. Tabii, bunu yapmak için, Comparator 4

arayüzünü kılgılayan bir sınıf tanımlamak gerekir. Aşağıdaki program kendi sıralama metodunu tanımlamaktadır. (Sıralamayı tersine çeviriyor.) //package comparator import java.util.arraylist; import java.util.collections; import java.util.list; import java.util.comparator; public class ComparatorDemo implements Comparator<Integer> { //Bu metot sıralamayı tesine çeviriyor. public int compare(integer obj1, Integer obj2) { return (obj1 > obj2? -1 : (obj1 == obj2? 0 : 1)); class Uygulama { List<Integer> list = new ArrayList<Integer>(); list.add(5); list.add(4); list.add(3); list.add(7); list.add(2); list.add(1); Collections.sort(list, new ComparatorDemo()); for (Integer k : list) { System.out.print("\t" + k); 7 5 4 3 2 1 Koleksiyonda bir doğal sıralama (küçükten büyüğe doğru) varken, sıralamayı tersine çevirmek (büyükten küçüğe doğru) için java Collections sınıfının reverseorder() metodu kullanılabilir. Aşağıdaki program Comparator yardımıyla bir ArrayList i azalan sıraya koymak için sözü edilen metodu kullanmaktadır. import java.util.arraylist; import java.util.collections; import java.util.comparator; public class ComparatorDemo03 { // Bir ArrayList yaratıyor 5

ArrayList arraylist = new ArrayList(); // Add elements to Arraylist arraylist.add("a"); arraylist.add("b"); arraylist.add("c"); arraylist.add("d"); arraylist.add("e"); * Koleksiyon üzerinde ters sıralamayı oluşturacak comparator * tanımlanıyor Comparator comparator = Collections.reverseOrder(); arraylist); System.out.println("Sıralamadan önceki ArrayList : " + * Comparatoru kullanarak ArrayList'i oluşturmak için * static void sort(list list, Comparator c) * metodu kullanılıyor. Collections.sort(arrayList, comparator); System.out.println("Sıralamadan sonraki ArrayList :" + arraylist); Sıralamadan önceki ArrayList : [A, B, C, D, E] Sıralamadan sonraki ArrayList : [E, D, C, B, A] Aşağıdaki program, nesnelerden oluşan bir arrayi, nesnelerin farklı veri alanlarına (yaş ve ad) göre sıralayan metotlar tanımlamakta ve onlara göre sıralama yapmaktadır. java.util.comparator arayüzünün iki metodu şunlardır: 1) public int compare(object object1, Object object2) ve 2) boolean equals(object object) import java.util.*; class Personel { private int age; private String name; public void setage(int age) { this.age = age; 6

public int getage() { return this.age; public void setname(string name) { this.name = name; public String getname() { return this.name; class AgeComparator implements Comparator { public int compare(object prs1, Object prs2) { int prs1age = ((Personel) prs1).getage(); int prs2age = ((Personel) prs2).getage(); if (prs1age > prs2age) return 1; else if (prs1age < prs2age) return -1; else return 0; class NameComparator implements Comparator { public int compare(object prs1, Object prs2) { * parametreler Object tipinden olduğu için onu Personel * sınıfına dönüştürüyoruz (cast) String prs1ad = ((Personel) prs1).getname(); String prs2ad = ((Personel) prs2).getname(); * Personelin adlarını mukayese etmek için * compareto() metodu kullanılıyor. return prs1ad.compareto(prs2ad); public class ComparatorDemo04 { public static void main(string args[]) { // Personel array which will hold employees Personel employee[] = new Personel[3]; // Đki personel için veri gir. employee[0] = new Personel(); employee[0].setage(40); 7

employee[0].setname("zeynep"); employee[1] = new Personel(); employee[1].setage(20); employee[1].setname("burhan"); employee[2] = new Personel(); employee[2].setage(30); employee[2].setname("çiğdem"); System.out.println("Sıralamadan önce : "); // print array as is. for (int i = 0; i < employee.length; i++) { System.out.println("Personel " + (i + 1) + " name :: " + employee[i].getname() + ", Age :: " + employee[i].getage()); Arrays.sort(employee, new AgeComparator()); System.out.println("\n\n Personeli yaşalarına göre sıraladıktan sonra : "); for (int i = 0; i < employee.length; i++) { System.out.println("Personel " + (i + 1) + " name :: " + employee[i].getname() + ", Age :: " + employee[i].getage()); Arrays.sort(employee, new NameComparator()); System.out.println("\n\n Personeli adlarına göre sıraladıktan sonra :"); for (int i = 0; i < employee.length; i++) { System.out.println("Personel " + (i + 1) + " name :: " + employee[i].getname() + ", Age :: " + employee[i].getage()); Sıralamadan önce : Personel 1 name :: Zeynep, Age :: 40 Personel 2 name :: Burhan, Age :: 20 Personel 3 name :: Çiğdem, Age :: 30 Personeli yaşalarına göre sıraladıktan sonra : Personel 1 name :: Burhan, Age :: 20 Personel 2 name :: Çiğdem, Age :: 30 Personel 3 name :: Zeynep, Age :: 40 Personeli adlarına göre sıraladıktan sonra : Personel 1 name :: Burhan, Age :: 20 Personel 2 name :: Zeynep, Age :: 40 Personel 3 name :: Çiğdem, Age :: 30 8

Doğal sıralama için Comparable arayüzünü kılgılamak yeterlidir. Doğal sıralamadan farklı bir sıralama isteniyorsa Comparator arayüzündeki compare(object1 o1, Object2, o2) metodu kullanılarak istenen sıralama tanımlanabilir. Sıralama tanımlandıktan sonra Collections.sort() metodu ile liste istenen sıraya konulabilir. import java.util.*; public class ComparatorDemo implements Comparable { String ad; int yaş; long gelir; public ComparatorDemo(String ad, int yaş) { this.ad = ad; this.yaş = yaş; public ComparatorDemo(String ad, int yaş, long gelir) { this.ad = ad; this.yaş = yaş; this.gelir = gelir; public String getad() { return ad; public int getyaş() { return yaş; public String tostring() { return ad + " : " + yaş; * * Bu sınıf için doğal sıralama public int compareto(object o) { return getad().compareto(((comparatordemo) o).getad()); static class YaşaGöreSırala implements Comparator { * java.util.comparator#compare(java.lang.object, java.lang.object) public int compare(object obj1, Object obj2) { ComparatorDemo p1 = (ComparatorDemo) obj1; ComparatorDemo p2 = (ComparatorDemo) obj2; if (p1.getgelir() == 0 && p2.getgelir() == 0) return p1.getyaş() - p2.getyaş(); else return (int) (p1.getgelir() - p2.getgelir()); List emekli = new ArrayList(); emekli.add(new ComparatorDemo("Kemal", 34)); 9

emekli.add(new ComparatorDemo("Tolga", 13)); emekli.add(new ComparatorDemo("Maviş", 25)); emekli.add(new ComparatorDemo("Derya", 66)); Collections.sort(emekli); System.out.println("Doğal Sıralama:"); System.out.println("Sıralama : " + emekli); Collections.sort(emekli, Collections.reverseOrder()); System.out.println("Doğal Sıralamanın tersi:"); System.out.println("Sıralama : " + emekli); List emekligeliri = new ArrayList(); emekligeliri.add(new ComparatorDemo("Kemal", 4, 33)); emekligeliri.add(new ComparatorDemo("Tolga", 3, 3)); emekligeliri.add(new ComparatorDemo("Maviş", 25, 666)); emekligeliri.add(new ComparatorDemo("Derya", 66, 2)); Collections.sort(emekli, new YaşaGöreSırala()); System.out.println("Yaşa göre sırala"); System.out.println("Sıralama : " + emekli); Collections.sort(emekliGeliri, new YaşaGöreSırala()); System.out.println("Yaşa ve gelire göre sırala"); System.out.println("Sıralama : " + emekligeliri); public long getgelir() { return gelir; public void setgelir(long gelir) { this.gelir = gelir; public void setyaş(int yaş) { this.yaş = yaş; public void setad(string ad) { this.ad = ad; Doğal Sıralama: Sıralama : [Derya : 66, Kemal : 34, Maviş : 25, Tolga : 13] Doğal Sıralamanın tersi: Sıralama : [Tolga : 13, Maviş : 25, Kemal : 34, Derya : 66] Yaşa göre sırala Sıralama : [Tolga : 13, Maviş : 25, Kemal : 34, Derya : 66] Yaşa ve gelire göre sırala Sıralama : [Derya : 66, Tolga : 3, Kemal : 4, Maviş : 25] 10