2011-03-18 12 views
7

Bir paramızla (String bookNum, String bookTitle, int qoh, double bookPrice) bir Kitaplık envanteri nesnesi oluşturmam gereken bir atamam var. BookNum bir kitabın tirelenilen ISBN numarasıdır. Bu diziyi oluşturduktan sonra, Koleksiyonlar sınıfının sıralama yöntemini kullanmalıyım. Benim varlığım BookInventory sınıfında, arraylist'i bookNum (bir String olan) tarafından sıraya dizecek bir compareTo() yazmam gerekiyor. Bunu nasıl yaparım? Bu benim ilk deneyimim ve anlayamıyorum.ortak bir int yazarak compareTo() yöntemi java

cevap

16

Bu başlangıç ​​olmalıdır:

public class BookInventory implements Comparable<BookInventory> { 

    // code 

    public int compareTo(BookInventory other){ 
    return bookTitle.compareTo(other.bookTitle); 
    } 

    //code 
} 

şey bu Karşılaştırılabilir uygulamaktır dan size bir ArrayList sıraladığınızda compareTo yöntemi otomatik olarak adlandırılan, thats kendi özel uygulamak, böylece götürmek.

göz atın compareTo ve sipariş hakkında daha fazla bilgi edinmek için bu:

http://download.oracle.com/javase/tutorial/collections/interfaces/order.html

+0

Hızlı not vardır> olduğu ağır basan eşittir aksine, girdi Burada parametre, Object türünde OLMAMALIDIR. – anon58192932

1

Bir documentation for the Collections sınıf bakarsanız, iki sort mwethods uygulayan göreceksiniz. Biri, listedeki öğeleri karşılaştırmak için List ile birlikte Comparator nesnesini alır. Diğer, Comparable'u uygulayan herhangi bir nesnenin List'unu alır. compareTo, Comparable (Comparator, compare'u uygulamalıdır) tarafından tanımlandığından, bu, sınıfınızın implements Comparable<BookInventory> olarak bildirilmesi gerektiğini belirtir; bu, bunun compareTo yöntemine sahip olması gerektiği anlamına gelir. Yöntemin yapması gereken şey için documentation for Comparable.compareTo(T)'a bakın. Yararlı olması için String yönteminin compareTo(String) yöntemini bulacaksınız.

1

compareTo() yöntemi, birden çok özelliğe sahip iki nesneyi karşılaştırmak için kullanılır. Karşılaştırılan nesnelerin hangisinin daha büyük olduğunu belirtmek için bir tam sayı döndürecektir. Karşılaştırılan nesnelerin, doğal düzenleri olan özelliklere sahip olması daha mantıklıdır.

Dönüş değeri:

  • az 0 -> nesne geçmeden önce bir amacı olduğuna işaret etmektedir.
  • 0'dan fazla -> nesnedir 0'a
  • eşit geçirilen nesne sonra - iki nesnenin aynı düzeyde okuyan herkes için
+1

"9'a eşit" -> "0'a eşit" –

+0

benim kötülüğümü oops eder. şişman parmakları yazarak. son seçeneğin "0'a eşit" olması gerekiyordu. @Paul Blessing. Teşekkür ederim –

İlgili konular