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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张建峰 初级黑马   /  2012-8-11 12:28  /  1495 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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时,怎么定义泛型

评分

参与人数 1技术分 +1 收起 理由
包晗 + 1

查看全部评分

2 个回复

正序浏览
TreeMap排序只是针对键来排的,因为键才是唯一的呢。所以这个比较器定义的泛型是键的泛型。
另外,楼主对Set集合和Map集合概念还不太清楚吧?
Set<Character,Integer> set= new TreeMap<Character ,Integer>(new MyComparator());
这句话本就不对。因为Set集合时单列集合,Map是双列集合(键和值),而你这样写很显然是概念混乱.

Set <Character ,Integer>set= map.entrySet();
这句话的意思是将map中键和值的映射关系存放到Set集合中,而不是键和值
回复 使用道具 举报
这个是按“键”的顺序来排的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马