2013-07-06 11 views
6

Tôi đã làm việc với một ví dụ mà nó sử dụng ArrayList chứa các cá thể mới và sử dụng phương thức Collections.sort() bằng cách sử dụng giao diện có thể so sánh. Tôi không biết tại sao nó in ra các hashcode khi nó sắp xếp và nơi các lỗi trong mã của tôi. Bất cứ ai có thể xin vui lòng tìm ra những sai lầm và giải thích cho tôi một cách chi tiết.Khi sử dụng Collections.sort(), nó sắp xếp và in mã băm

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

Output:

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

Bạn cần phải ghi đè 'phương pháp toString'. –

+1

Siêu Rohit. Nó hoạt động. –

+0

Bạn được chào đón :) –

Trả lời

10

Bạn cần t o ghi đè toString() phương pháp để in sản lượng khá, theo mặc định nó coi toString Object của() được thực hiện như

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

và do đó sản lượng

+0

+1 Thats Right. Nhưng mã của bạn không tập luyện. Đây là những gì tôi sử dụng bây giờ. 'Chuỗi công khai ToString() { \t \t trả về fruitName +" "+ fruitDesc +" "+ fruitQuantity +" \ n "; \t} ' –

+5

@JavaBeginer. Anh ta đã đưa ra cách 'toString' mặc định trông như thế nào, không phải cách bạn nên làm. Đây là những gì bạn cần ghi đè, mà bạn đã làm bây giờ. –

Các vấn đề liên quan