2013-07-06 8 views
6

टाइप करता है और प्रिंट करता है मैं एक उदाहरण के साथ काम कर रहा था जहां यह ऐरेलिस्ट का उपयोग करता है, नए उदाहरण होते हैं और तुलनात्मक इंटरफ़ेस का उपयोग करके Collections.sort() विधि का उपयोग करते हैं। मुझे नहीं पता कि यह हैशकोड क्यों प्रिंट करता है जब यह मेरे कोड में बग और कहां है। क्या कोई भी गलती का पता लगा सकता है और मुझे विस्तार से समझा सकता है।संग्रह .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

आप टी की जरूरत है ओ सुंदर उत्पादन मुद्रित करने के लिए toString() विधि ओवरराइड, डिफ़ॉल्ट रूप से यह वस्तु के toString() जो की तरह

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

कार्यान्वित किया जाता है और इसलिए उत्पादन

+0

+1 ठीक है। लेकिन आपका कोड कसरत नहीं था। यहां मैं अभी उपयोग किया गया है। 'सार्वजनिक स्ट्रिंग टूस्ट्रिंग() { \t \t वापसी फलनाम + "" + फलडेस्क + "" + फल मात्रा + "\ n"; \t} ' –

+5

@JavaBeginer। उन्होंने दिया है कि कैसे डिफ़ॉल्ट 'toString' दिखता है, न कि आपको कैसे करना चाहिए। यही वह है जिसे आपको ओवरराइड करने की आवश्यकता है, जिसे आपने अभी किया है। –

संबंधित मुद्दे