黑马程序员技术交流社区

标题: 集合中的比较器问题 [打印本页]

作者: 张建峰    时间: 2012-8-11 12:28
标题: 集合中的比较器问题
  1. Map<Character , Integer>map=new TreeMap <Character ,Integer>(new MyComparator());
  2. Set <Character ,Integer>set= map.entrySet();
  3. Class MyComparator implements Comparator<???>{
  4. ???}
复制代码
就像上面写的那样:
TreeSet中可以定义比较器,按照对象的某种属性来定义排序
TreeMap中的键值对是两种类型,而比较器只能定义一种泛型,那么能否也这样进行定义排序?
或者说当一个Map集合调用了EntrySet方法,那么是否可以做成:
Set<Character,Integer> set= new TreeMap<Character ,Integer>(new MyComparator());
如果能,这个MyComparator实现Comparator时,怎么定义泛型
作者: 朱志辉    时间: 2012-8-11 13:02
这个是按“键”的顺序来排的
作者: 杜佳瑞    时间: 2012-8-11 13:44
TreeMap排序只是针对键来排的,因为键才是唯一的呢。所以这个比较器定义的泛型是键的泛型。
另外,楼主对Set集合和Map集合概念还不太清楚吧?
Set<Character,Integer> set= new TreeMap<Character ,Integer>(new MyComparator());
这句话本就不对。因为Set集合时单列集合,Map是双列集合(键和值),而你这样写很显然是概念混乱.

Set <Character ,Integer>set= map.entrySet();
这句话的意思是将map中键和值的映射关系存放到Set集合中,而不是键和值




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