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

  • kamaniusilelis

    kamaniusilel

    10 HAZİRAN 2011
  • New Scientist

    New Scientis

    27 Kasım 2006
  • Shon Gonzales

    Shon Gonzale

    5 EKİM 2014