SORU
6 Mayıs 2010, PERŞEMBE


Sıralama özelliği ile özel Nesne ArrayList

ArrayLists ama bu örneklerin hepsi bir Karşılaştırıcı kullanarak sıralama hakkında insanlar bazı araştırmalara göre Dizeleri için bir yöntem compareTo eskiden okudum.

Onların özelliklerinden biri tarafından özel bir nesne ArrayList sıralamak istedim: bir Tarih nesnesi (getStartDay()). Normal bir şey gibi yazmak mümkün olup olmadığını merak ettim item1.getStartDate().before(item2.getStartDate()) tarafından onlara benzetiyorum:

public class customComparator {
    public boolean compare(Object object1, Object object2) {
        return object1.getStartDate().before(object2.getStartDate());
    }
}

public class randomName {
    ...
    Collections.sort(Database.arrayList, new customComparator);
    ...
}

CEVAP
6 Mayıs 2010, PERŞEMBE


Date uygular beri Comparable, String gibi compareTo bir yöntemi vardır.

Özel karşılaştırıcı şöyle:

public class CustomComparator implements Comparator<MyObject> {
    @Override
    public int compare(MyObject o1, MyObject o2) {
        return o1.getStartDate().compareTo(o2.getStartDate());
    }
}

(compare() yöntemi için planladığın gibi doğrudan karşılık veremeyeceğini çok int boolean neyse dönmelidir.)

Sıralama kodunuzu yazdığın gibi olur:

Collections.sort(Database.arrayList, new CustomComparator());


Doğrudan soru ile ilgili olmayan küçük noktalar bir çift vardır:

  1. Kongre tarafından, sınıfları, yöntemleri ve Değişkenler küçük harfle başlar iken büyük harf bir harf ile başlamalı. CustomComparator karşılaştırıcı adını değiştirdim.
  2. Javadocs kullanın. Eğer Java ile çalışmaya devam edersen çok değerli olacaklar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Amazon Web Services

    Amazon Web S

    8 NİSAN 2009
  • julioissk84life

    julioissk84l

    18 ŞUBAT 2008
  • KIT KAT

    KIT KAT

    3 EKİM 2005