黑马程序员技术交流社区

标题: 集合添加对象,输出的始终是最后一次的赋值 [打印本页]

作者: 13009862300    时间: 2015-9-3 01:01
标题: 集合添加对象,输出的始终是最后一次的赋值
TreeSet<Student> set=new TreeSet<Student>();
set.add(new Student(name, chinese, number, english));
输出的始终是最后一次添加的值  
怎么破

作者: Doug    时间: 2015-9-3 01:01
没重写equals()方法;没实现Comparable接口。
作者: 13009862300    时间: 2015-9-3 01:19
本帖最后由 13009862300 于 2015-9-3 01:24 编辑

XXXXXXXXXXX
作者: 13009862300    时间: 2015-9-3 01:20
这个问题解决不聊了XXXXXXXXXX
作者: liuch111    时间: 2015-9-3 09:14
本帖最后由 liuch111 于 2015-9-3 09:23 编辑

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

你需要注意下面几个问题:你的Student类是否具有可比较性,你的多个元素是怎么添加的(是否重复),然后又是怎么输出的?
由于没能看到你的代码,只能回答这么多了。
作者: 残影    时间: 2015-9-3 22:37
Student的类是怎样的呢,
作者: 肖天长    时间: 2015-9-4 12:13
源代码看看
作者: xinchi    时间: 2015-9-10 09:29
没有用迭代器取出




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2