2013-07-06 9 views
6

私は、ArrayListを使用する場所で新しいインスタンスを使用し、同等のインターフェイスを使用してCollections.sort()メソッドを使用しています。私はそれがソートされ、私のコードのどこにバグがあるときにそれがなぜハッシュコードを出力するのか分からない。誰でも間違いを見つけて詳細に説明してください。Collections.sort()を使用すると、ハッシュコードがソートされ、出力されます

SortFruitObject.java

import java.util.*; 
public class SortFruitObject{ 
    public static void main(String[] args){ 
     ArrayList<Fruit> frui = new ArrayList<Fruit>(); 

     frui.add(new Fruit("Pine", "PineDesc", 500)); 
     frui.add(new Fruit("Apple", "AppleDesc", 400)); 
     frui.add(new Fruit("Banana", "BananaDesc", 450)); 
     frui.add(new Fruit("JackFruit", "JackFruitDesc", 300)); 

     Collections.sort(frui); 
     System.out.println(frui); 
    } 
} 

Fruit.java

import java.io.*; 
import java.util.*; 
public class Fruit implements Comparable<Fruit>{ 
    private String fruitName; 
    private String fruitDesc; 
    private int fruitQuantity; 

    public int compareTo(Fruit f){ 
     return fruitName.compareTo(f.getFruitName()); 
    } 

    public Fruit(String fruitName, String fruitDesc, int fruitQuantity){ 
     this.fruitName = fruitName; 
     this.fruitDesc = fruitDesc; 
     this.fruitQuantity = fruitQuantity; 
    } 
    public void setFruitName(String fruitName){ 
     this.fruitName = fruitName; 
    } 
    public void setFruitDesc(String fruitDesc){ 
     this.fruitDesc = fruitDesc; 
    } 
    public void setFruitQuantity(int fruitQuantity){ 
     this.fruitQuantity = fruitQuantity; 
    } 
    public String getFruitName(){ 
     return fruitName; 
    } 
    public String getFruitDesc(){ 
     return fruitDesc; 
    } 
    public int getFruitQuantity(){ 
     return fruitQuantity; 
    } 
} 

出力:

[[email protected], [email protected], [email protected], [email protected]] 
+1

あなたは 'toString'メソッドをオーバーライドする必要がありますされ、オブジェクトのtoString()を考えて、デフォルトでは、かなりの出力を印刷するtoString()メソッドをオーバーライドします。 –

+1

スーパーRohit。できます。 –

+0

あなたは大歓迎です:) –

答えて

10

あなたはトンを必要としますOそれは

public String toString() { 
     return getClass().getName() + "@" + Integer.toHexString(hashCode()); 
    } 

のように実装し、その出力

+0

+1その通りです。しかし、あなたのコードはうまく動かなかった。ここでは私が今使ったことがあります。 'public String toString(){ \t \t return fruitName +" "+ fruitDesc +" "+ fruitQuantity +" \ n "; \t} ' –

+5

@ JavaBeginer。彼はどのようにあなたがすべきかではなく、デフォルトの 'toString'がどのように見えるかを与えました。これはあなたが現在行っているオーバーライドする必要があるものです。 –

関連する問題