黑马程序员技术交流社区

标题: 关于TreeSet比较器的小问题 [打印本页]

作者: 梦想家Eva    时间: 2015-11-28 19:43
标题: 关于TreeSet比较器的小问题
  1. TreeSet<Character> ts = new TreeSet<>(new Comparator<Charcter>() { public int compare(Character c1,Character c2 {
  2.    int num = c1-c2;
  3.   return num ==0?1:num;
  4. })
  5. });
复制代码
请问 什么c1-c2是对集合中的元素进行升序排序啊?


作者: 小笨笨天    时间: 2015-11-28 21:03
你这个对元素没有排序  
作者: ash午夜阳光    时间: 2015-11-28 22:03
这个可以添加重复元素的,是升序的
compare方法返回正数,插入的元素向后排,返回负数,向前排,返回0则无法添加元素
作者: 队长别开枪是我    时间: 2015-11-28 22:08
顶一顶好了,作为一名小白,我只能帮到这了0.0
作者: 梦想家Eva    时间: 2015-11-29 19:10
ash午夜阳光 发表于 2015-11-28 22:03
这个可以添加重复元素的,是升序的
compare方法返回正数,插入的元素向后排,返回负数,向前排,返回0则无法添加 ...

这样啊,多谢!
作者: ash午夜阳光    时间: 2015-11-29 21:15
梦想家Eva 发表于 2015-11-29 19:10
这样啊,多谢!

不谢,咱俩头像都差不多
作者: chirst123    时间: 2015-11-29 22:32
c1是新传入的, c2是被比较的; 如果比c2小返回时就在c2的左边,大就在c2的右边,相等就再比较其他的属性
作者: 石三伢子1    时间: 2015-11-30 11:18
这个程序是存储的顺序就是取出的顺序,主要凯compare方法的返回值类型;则个程序有问题哦,有个泛型没写;
作者: 1018chenhaiyang    时间: 2015-11-30 11:38
楼上已经有了正确答案
作者: 梦想家Eva    时间: 2015-11-30 12:43
石三伢子1 发表于 2015-11-30 11:18
这个程序是存储的顺序就是取出的顺序,主要凯compare方法的返回值类型;则个程序有问题哦,有个泛型没写; ...

在jdk1.7还是1.8,后面的泛型是可以省略的,这个新特性称为菱形泛型
作者: Good_Man    时间: 2015-11-30 13:20
好少的代码呀。不过知识 很独特,,
作者: 石三伢子1    时间: 2015-11-30 18:38
梦想家Eva 发表于 2015-11-30 12:43
在jdk1.7还是1.8,后面的泛型是可以省略的,这个新特性称为菱形泛型

哈哈,那是我out了;
作者: 斥候7300    时间: 2015-11-30 18:43
刚好学到集合
作者: susie_cc    时间: 2015-12-4 23:42
http://www.cnblogs.com/ningvsban/archive/2013/05/06/3062535.html  这个博客关于TreeSet介绍的很详细,可以参阅一下
作者: Ellie    时间: 2015-12-4 23:43
TreeSet是一个有序集合,TreeSet中的元素将按照升序排列,缺省是按照自然排序进行排列,意味着TreeSet中的元素要实现Comparable接口。或者有一个自定义的比较器。




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