排序相同年龄出现问题?
还有0人有此问题
发表在Java视频课程答疑 2017-06-20
是否精华
版块置顶:

    修改代码如下:

                Person p1 = new Person(1, 18, "小明");

Person p2 = new Person(2, 18, "大壮");

Person p3 = new Person(3, 20, "阿强");


                int diff = this.age - p.age;//compareTo()方法中的排序参数为age升序排列

两人是同学,年龄一样大,输出结果:


Person [id=1, age=18, name=小明]

Person [id=3, age=20, name=阿强]

set集合中 大壮同学没有了,好悲哀!


再加几个人如:

                Person p1 = new Person(1, 18, "小明");

Person p2 = new Person(2, 18, "大壮");

Person p3 = new Person(3, 20, "阿强");

Person p4 = new Person(4, 18, "tom");

Person p5 = new Person(5, 18, "小天");

还是一样的输出结果呢,是否表明

set集合 添加元素是以compareTo()方法中的 排序参数(这里我改成了age)来辨别身份的?

可是这确实是不同的人啊。

举个场景,比如 老师送这些学生去医院体检,医生说按年龄排好队。

这时set集合应该怎么做呢?

分享到:
精彩评论 4
David
学分:914 LV7
TA的每日心情
最后的冲刺
2017-07-15 10:46:08
2017-06-20
沙发

使用TreeSet是要注意两点:1.TreeSet中的元素具有排序性;2.TreeSet中的元素不能重复。所以,如果读者想模拟上述场景,那么只能用学生的id来排序。

17625087881
学分:42 LV2
2017-06-20
板凳

David 发表于2017-06-20 16:42

使用TreeSet是要注意两点:1.TreeSet中的元素具有排序性;2.TreeSet中的元素不能重复。所以,如果读者想模拟上述场景,那么只能用学生的id来排序。

就是想用age排序 并且输出结果如下:

Person(1, 18, "小明")

Person(2, 18, "大壮")

Person(4, 18, "tom")

Person(5, 18, "小天")

Person(3, 20, "阿强")

这样的结果,算不算脑洞大开,其实excell表排序就是这样的输出,只是想如果用


java来做,该怎么写代码?

David
学分:914 LV7
TA的每日心情
最后的冲刺
2017-07-15 10:46:08
2017-06-21
地板

很抱歉,如果使用compareTo()方法比较age,那么TreeSet不能实现读者想要的输出结果,因为age有重复值。

17625087881
学分:42 LV2
2017-06-21
4L

David 发表于2017-06-21 16:03

很抱歉,如果使用compareTo()方法比较age,那么TreeSet不能实现读者想要的输出结果,因为age有重复值。

嗯,确实如此

首页上一页 1 下一页尾页 4 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照