2013-07-06 32 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'方法。 –

+1

超級羅希特。有用。 –

+0

不客氣:) –

回答

10

你需要ŧ O強制toString()方法來打印輸出漂亮的,默認情況下它認爲對象的toString(),這是實現像

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'的外觀,而不是你應該怎麼做。這是你需要重寫的,你現在已經完成了。 –