SORU
7 Ocak 2009, ÇARŞAMBA


Karşılaştırma arasındaki fark nedir() ve compareTo()?

Java compare() ve compareTo() yöntemleri arasındaki fark nedir? Bu yöntemler aynı cevabı verir mi?

CEVAP
7 Ocak 2009, ÇARŞAMBA


JavaNotes:

  • bir.compareTo(b):
    Benzer arayüzü. Değerleri karşılaştırır ve dönerse değerleri, daha az, eşit ya da daha büyük karşılaştırırsanız anlatan bir int.
    Eğer sınıf nesneler varsadoğal düzenBenzer bir arabirim uygulamak ve bu yöntemi tanımlayın. Bu bir doğal bunu uygulamak sipariş tüm Java sınıfları (String, Double, BigInteger, ...).

  • compare(a, b):
    Arayüzü benzer. İki karşılaştırır nesnelerin değerleri. Bu Comparator<T> arabirim ve bir parçası olarak uygulanırtipik kullanılır tanımlamak için bir veya daha fazla küçük sınıflar programı uygulayan bu, geçmek için yöntemleri gibi sort() veya kullanım göre sıralama veri yapıları gibi TreeMap TreeSet. Aşağıdaki Benzer bir nesne oluşturmak isteyebilirsiniz:

    • Çoklu karşılaştırmalar. Bir şey sıralamak için birkaç farklı yollar sunar. Örneğin, adı, KİMLİĞİ, yaş, boy ile bir Kişi sınıfı Sırala istersen, ... bunların her biri sort() yönteme geçmek için bir Karşılaştırma tanımlayın.
    • Sistem sınıfıKarşılaştırma kontrol yok sınıflar için yöntemleri sağlar. Örneğin, uzunluğu ile onlara göre bu Dizeler için bir Karşılaştırıcı tanımlayabilirsiniz.
    • Strateji desenParametre olarak geçirebilirsiniz bir nesne olarak bir algoritma temsil etmek istediğiniz bir durum olan Strateji bir desen uygulamak için, veri yapısı, vb kaydetmek.

Eğer sınıf nesneleri bir doğal sıralama düzeni varsa, karşılaştırmak gerekebilir.


Digizol Özet

Karşılaştırılabilir
Benzer bir nesne başka bir nesne ile kendini karşılaştırarak yeteneğine sahiptir.

Karşılaştırıcı
Benzer bir nesne iki farklı nesneleri karşılaştırarak yeteneğine sahiptir. Sınıf örneklerini karşılaştırmak değil, ama başka bir sınıf örneği.


Kullanım şekli kaynaklar:

Benzer arayüzü

Yöntemi ve == != eşittiroperatörlereşitlik için test/eşitsizlik, amagöreli değerler için test etmek için bir yol sağlamaz.
Bazı sınıflar (örneğin, Dize ve bir doğal sıralama ile diğer sınıflar) Comparable<T> uygulamak compareTo() bir yöntem tanımlayan arabirim.
Collections.sort() Arrays.sort() yöntemler kullanmak isterseniz sınıf Comparable<T> uygulamak istersiniz.

Bir Karşılaştırıcı tanımlayan nesne

İçin Karşılaştırıcı oluşturabilirsinizherhangi bir sınıf için rasgele bir şekilde Sırala.
Örneğin, String sınıfı CASE_INSENSITIVE_ORDER comparator tanımlar.


İki yaklaşım arasındaki fark kavramı ile bağlantılı olabilir:
Toplama Emri Verdi:

Bir Toplama emri, (rasgele) belirli bir düzen (Hashtable sipariş değil) koleksiyonunda yineleme anlamına gelir.

Bir ile bir Koleksiyondoğal düzensadece emri verir, amasıralanmış. 23* *doğal bir düzen (natural String order) tanımlama.


Başka bir fark, the comments 25 *ile işaret etti:

  • Comparable uygulama ve gerçekten ne olacağını bilmiyorsun yani arayüzü, görünür değil.
  • Comparator sipariş iyi tanımlanmış olacak bir güvence vermektedir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • TomSka

    TomSka

    30 Mayıs 2006
  • TurkishRoyal

    TurkishRoyal

    16 Ocak 2007
  • UnboxTechnology

    UnboxTechnol

    20 Ocak 2011