黑马程序员技术交流社区
标题:
集合中的比较器问题
[打印本页]
作者:
张建峰
时间:
2012-8-11 12:28
标题:
集合中的比较器问题
Map<Character , Integer>map=new TreeMap <Character ,Integer>(new MyComparator());
Set <Character ,Integer>set= map.entrySet();
Class MyComparator implements Comparator<???>{
???}
复制代码
就像上面写的那样:
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