When using Collections.sort (), it sorts and prints the hash code

I worked with one example where it uses an ArrayList, contains new instances, and uses the Collections.sort () method using a comparable interface. I do not know why it prints a hash code when it sorts and where is the error in my code. Someone can figure out the error and explain it to me in detail.

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:

 [ Fruit@36422510 , Fruit@308f5944 , Fruit@132d9844 , Fruit@1667a232 ] 
+6
source share
1 answer

You need to override the toString() method to print enough output, by default it treats Object toString (), which is implemented as

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

and therefore exit

+10
source

Source: https://habr.com/ru/post/948832/


All Articles