2 Nisan 2012 Pazartesi

JAVADA COLLATOR SINIFI

Java-nin Collections sinifinin faydali 1 metodlarindan biride sort () metodudur.Bu metod verilen listeleri istediyimiz kimi  siralamaga imkan verir.Ancaq bu kimi islerde bezen karakter meselesi ortaya cixir.Yeni,Şırnak,Çanakkale,Ordu kimi Stringleri siraladiqda canakkale,Ordu Sirnak sirasini gozleyerken Ordu,canakkale,Sirnak seklinde 1 siralama ortaya cixir.Bu kimi veziyyetlerde bize komek edecek siniflerden biri Locale alabilen COLLATOR sinifidir.Dediyimiz bu sort() metodunun 2 versiyasi vardir:

  • Collections.sort(List<T>list);
  • ArrayList,LinkedList,Vector kimi List interface-ni implement eden 1 sinifi parametre olaraq alir.Metodu bu sekilde istifade etmek ucun listenin saxlandigi elementlerin tipi olan sinif Comparable sinifini implement etmek zorundadir.meselen:
sadece kitab adini tutan ,Kitab adinda sade 1 class-miz oldugunu dusunek.Bu sinif implement etdiyi Comparable interface-nin compareTo(); metodunu implement etmek mecburiyyetinde.

public class Kitab implements Comparable{
private String ad;
public String getAd(){
return ad;
}
public void setAd(String ad){
this.ad=ad;
}

@ Override
public int  compareTo() (Kitab kitab){
Collator c=Collator.getInstance(Locale.getDefault());     // veya new Locale("tr","TR");
return c.compare(this.getAd(),o.getAd());
}
}

Indi ise kitablarimizi listeleyek:

List<Kitab> kitabsiyahisi=getKitablar();
Collections.sort(kitabsiyahisi);




  • Collections.sort(List<T>list,Comparator<T>comparator);
Bu metod objeleri muqayise edir.Eger muqayise dogru olarsa  ,Collections.sort(Koleksiyon,siralama) metodu ile siralama aparilir.bu metod ise 1i List digeride Comparator interface-ni implement eden sinifi parametre olaraq alir.Kitablarimizi siralamaq ucun bu defe Comparator interface-ni implement eden Comparator 1 sinif tanimlayiriq:

class KitabComparator implements Comparator<Kitab>{

@ Override
 public int compare(Kitab k1,Kitab k2){
Collator c=Collator.getInstance(new Locale("tr","TR"));
return c.compare(k1.getAd(),k2.getAd()));
}
}

List <Kitab> kitabsiyahisi=getKitablar();
Collections.sort(kitabsiyahisi,new KitabComparator());

kimi 1 ifade ilede kitabsiyahisi siralanmis 1 sekilde olur.

Hiç yorum yok:

Yorum Gönder