2013-07-06 2 views
6

Ich arbeitete mit einem Beispiel, in dem ArrayList neue Instanzen verwendet und die Collections.sort() -Methode verwendet, die die vergleichbare Schnittstelle verwendet. Ich weiß nicht, warum es den Hashcode ausdruckt, wenn es sortiert und wo der Fehler in meinem Code. Kann jemand bitte den Fehler herausfinden und mich im Detail erklären.Wenn Sie Collections.sort() verwenden, sortiert und druckt es den Hashcode

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; 
    } 
} 

Ausgang:

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

Sie müssen Methode überschrieben 'toString' implementiert ist. –

+1

Super Rohit. Es klappt. –

+0

Gern geschehen :) –

Antwort

10

Sie benötigen t o außer Kraft setzen toString() Methode ziemlich Ausgabe zu drucken, wird standardmäßig es Object toString() ist der Auffassung, die wie

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

und so die Ausgabe

+0

+1 Das ist richtig. Aber dein Code hat nicht funktioniert. Hier ist, was ich jetzt benutzt habe. 'public Zeichenfolge toString() { \t \t Rückgabe fruitName +" "+ fruitDesc +" "+ fruitQuantity +" \ n "; \t} ' –

+5

@JavaBeginer. Er hat angegeben, wie der Standard 'toString' aussieht, nicht wie du es machen sollst. Das müssen Sie überschreiben, was Sie jetzt getan haben. –

Verwandte Themen