A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

10黑马币
TreeSet<Student> set=new TreeSet<Student>();
set.add(new Student(name, chinese, number, english));
输出的始终是最后一次添加的值  
怎么破

最佳答案

查看完整内容

没重写equals()方法;没实现Comparable接口。

13 个回复

倒序浏览
没重写equals()方法;没实现Comparable接口。
回复 使用道具 举报
本帖最后由 13009862300 于 2015-9-3 01:24 编辑

XXXXXXXXXXX
回复 使用道具 举报
这个问题解决不聊了XXXXXXXXXX
回复 使用道具 举报
本帖最后由 liuch111 于 2015-9-3 09:23 编辑

code能打全吗?
回复 使用道具 举报
backin 来自手机 中级黑马 2015-9-3 10:15:52
地板
TreeSet初始化的位置错了,要在遍历之前初始化,Student对象要在遍历时初始化
回复 使用道具 举报
这个问题我以前也碰到过,你是不是采用的的是循环赋值,而且把集合创建放在循环之内。你先打印一下集合的大小,如果size是1就应该是这个问题。最好把代码贴全就能看出来了。
回复 使用道具 举报
路过一下!
回复 使用道具 举报
首先明确一下,TreeSet集合使用的是二叉树数据结构,它有两个这样两个特点:
1、TreeSet内部不能在重复元素,当你向其中添加(add)元素与集合中已有元素相同时,添加失败;
2、TreeSet集合内的元素是有序的,最后一次添加(add)的元素不一定就存储在集合的最后。
两个元素是否相同,或都其大小顺序是比较得到的,比较有两种方式:传递比较器,或者让被添加的对象实现(implements)接口Comparable。

你需要注意下面几个问题:你的Student类是否具有可比较性,你的多个元素是怎么添加的(是否重复),然后又是怎么输出的?
由于没能看到你的代码,只能回答这么多了。
回复 使用道具 举报
Student的类是怎样的呢,
回复 使用道具 举报
还没学到,好高端的样子
回复 使用道具 举报
源代码看看
回复 使用道具 举报
我还是不会
回复 使用道具 举报
没有用迭代器取出
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马