使用二叉树TreeSet排序输出类,为什么输出的不是内容,而是地址?

喜欢多瑞咪的发索拉西 2016-07-02 04:51:37
package collectiontext;

import java.util.Iterator;
import java.util.Scanner;
import java.util.TreeSet;
import java.util.zip.Adler32;

public class Treesettext {

public static void main(String[] args) {
TreeSet treeset=new TreeSet(); //创建二叉树对象treeset,作为排序的容器
treeset.add(new Per("1")); //添加Per类元素1
treeset.add(new Per("2")); //添加Per类元素2
treeset.add(new Per("3")); //添加Per类元素3
treeset.add(new Per("4")); //添加Per类元素4
treeset.add(new Per("5")); //添加Per类元素5
Iterator it=treeset.iterator();//预备迭代输出
while(it.hasNext()){
System.out.println(it.next());
}

}

}

public class Per implements Comparable{ / /创建类Pet,实现Comparable接口,为重写排序方法做预备
String s; //类的成员域为字符串变量s
public Per(String s) { //构造函数
super();
this.s=s;
}
Object o=(Object)s;
public int compareTo(Object o) {
return -1; //返回值为-1,逆序排列
}
}


备注:其实Per类很简单,就相当于一个普通的字符串,只是为了给它排序(不知道怎么给string类重写排序方法,所以才构建Per类的)
可没想到的是,程序运行结果为:
collectiontext.Per@1888759
collectiontext.Per@6e1408
collectiontext.Per@e53108
collectiontext.Per@f62373
collectiontext.Per@19189e1

预想中的应该是:
1
2
3
4
5
吧?为什么会出现偏差呢?有谁知到能告诉我一下吗?真的查了好久了,不知道原因,唉!
...全文
320 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Be_nurturing 2016-07-07
  • 打赏
  • 举报
回复
重写toString() 或是 写成Per p = it.next(); System.out.print(p.s)
  • 打赏
  • 举报
回复
Brian_Liuyd 2016-07-04
  • 打赏
  • 举报
回复
因为Per类中 没有重写toString方法
公子寻欢 2016-07-02
  • 打赏
  • 举报
回复
你自己新建的一个类,要是直接打印这个类的实例,默认调用的是从Object类中继承的toString()方法; 要想打印出你自己想要的结果,就需要自己重写这个类的toString()方法啊; 快捷键alt+shift+s,选择Override/Imeplement Methods,在弹出的对话框里选中toString,点确定就行了。
阳光越来越暖 2016-07-02
  • 打赏
  • 举报
回复
Per类 里面 shift-alt-s 然后点toString 然后选所有 在ok
阳光越来越暖 2016-07-02
  • 打赏
  • 举报
回复
重写toString方法

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧