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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 357016138 中级黑马   /  2014-7-23 09:01  /  1403 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

举例说明一下,最好通俗一点,基础不好

2 个回复

倒序浏览
Map集合中好像只有TreeSet可以对元素进行排序吧。
默认是自然排序(类似字典排序)。你可以往它的构造函数传入构造器对象,则可以使它按照你设定的顺序去排。例
       TreeSet ts = new TreeSet(new Comparator());
Comparator就是比较器,你要创建一个类实现这个接口,复写compare方法,按照自己的意思去排。假如你要比的是字符串长度,那就按照长度去排。
还有一种方式就是让你让排序的元素(对象)实现Comparable接口,覆盖compareTo方法,和上面的compare覆盖一样。
回复 使用道具 举报
亲TreeSet是collection集合里的Set集合,Map集合里面有个自己的treeMap集合,这个才是利用了二叉树原理,来进行集合的自然排序,当集合里面的对象已经定义了自然排序的规则是,就会按照自然排序进行排序。如果要进行自定义的排序,有两种方法可以实现,
第一种就是让假如Map集合的元素实现Comparable,然后实现在方法中覆盖compareTo方法,不过在定义一个类的时候最好是完善这个类的比较方法,比如复写equals方法,复写hashCode方法,复写了这些可以把你的这个类的对象作为元素放到不同的集合中区。
第二种方法就是完成一个比较器,自定义一个比较器,实现Comparator接口,然后复写compare方法,按照实际需要,来定义这个比较器需要排序的方法。然后将这个比较器作为参数来初始化集合,这是集合就拥有了你自定义的比较器,会按照你定义的比较方法来进行排序。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马