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

  • Edge-CGI 3D Tutorials and more!

    Edge-CGI 3D

    11 HAZİRAN 2013
  • warningthepeople

    warningthepe

    21 EYLÜL 2011
  • WhtButterflyLiz

    WhtButterfly

    14 NİSAN 2008