SORU
15 Aralık 2008, PAZARTESİ


Nasıl birden çok alana göre nesneleri karşılaştırmak için

Birkaç alan var göre olabilir ki: bazı nesneler varsayalım

public class Person {

    private String firstName;
    private String lastName;
    private String age;

    /* Constructors */

    /* Methods */

}

Sorduğunuz zaman bu örnek, bu yüzden:

a.compareTo(b) > 0

eğer bir soyadı b a b eskiyse, ya da, vb önce gelirse diye düşünebilirsiniz...

Nesnelerin bu tür gereksiz yığılmayı eklemeden ya da giderleri arasında çoklu karşılaştırma etkinleştirmek için en temiz yolu nedir?

  • java.lang.Comparable arabirim bir alan sadece karşılaştırma sağlar
  • Çok sayıda yöntem (6*,* 7 *yani*, vb...) karşılaştırmak ekleme bence kalabalık.

Bu konuda gitmek için en iyi yolu nedir?

CEVAP
15 Aralık 2008, PAZARTESİ


Comparable <Person> uygulamak gerekir. Tüm alanlar null (basitlik aşkına) olmayacağını varsayarsak, o yaşta bir int ve karşılaştırın sıralaması son, ilk, yaş, compareTo yöntemi oldukça basittir:

public int compareTo(Person other) {
    int i = firstName.compareTo(other.firstName);
    if (i != 0) return i;

    i = lastName.compareTo(other.lastName);
    if (i != 0) return i;

    return Integer.compare(age, other.age);
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ChannelRichard

    ChannelRicha

    7 Kasım 2008
  • kruno j

    kruno j

    6 Mayıs 2007
  • Unbox Therapy

    Unbox Therap

    21 Aralık 2010