黑马程序员技术交流社区

标题: Map集合怎么对集合中的元素排序? [打印本页]

作者: 357016138    时间: 2014-7-23 09:01
标题: Map集合怎么对集合中的元素排序?
举例说明一下,最好通俗一点,基础不好

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




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