java - 使用 Collections.sort() 时,它排序并打印哈希码

标签 java sorting interface comparable

<分区>

我正在处理一个示例,其中它使用 ArrayList 包含新实例并使用 Collections.sort() 方法使用可比较的接口(interface)。我不知道为什么它在排序时会打印出哈希码,也不知道我的代码中的错误在哪里。任何人都可以找出错误并详细解释我。

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

水果.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;
    }
}

输出:

[Fruit@36422510, Fruit@308f5944, Fruit@132d9844, Fruit@1667a232]

最佳答案

您需要重写toString() 方法来打印漂亮的输出,默认情况下它认为对象的toString() 实现方式如下

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

所以输出

关于java - 使用 Collections.sort() 时,它排序并打印哈希码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17500899/

相关文章:

c# - 实现内部类内部接口(interface)报错

java - java中如何避免重复的数据库连接?

java - 在 JAVA 中,将两个整数传递给接受一个整数的方法到底是如何工作的? ( 安卓 )

java - GWT 在外部服务器上运行

javascript - 如何根据另一个数组中的相应值对一个数组进行排序?

c++ - 具有堆和映射等效功能的数据结构

java - 如果 ViewModel 持有此 Activity 实现的接口(interface)引用,GC 是否会收集 Activity 引用?

java - Java 中的多级(嵌套?)Jlist

c - 按 2 个字段对结构体数组进行插入排序

vba - 在 VBA 中实现接口(interface)的类模块中的其他方法