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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© FINE 中级黑马   /  2015-1-5 12:53  /  1414 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天练习TreeSet,可是编译的时候一直报错,代码检查了好几遍,肯定没有问题。后来看毕老师的视频,好像要实现comparator接口,是不是以后使用TreeSet的时候都要实现comparator接口,那什么情况下使用TreeSet??看了视频之后也还是不太明白、

6 个回复

倒序浏览
TreeSet的底层是二叉数结构的,可以对元素进行排序,需要另写一个类实现comparator接口,把这个类的对象作为匿名内部类传进TreeSet的构造函数中,或者让要存进去的对象实现comparable接口,使用这两个接口时,可以根据需要复写其中的方法。TreeSet是可以排序的,看需要选择了。
希望可以帮到你。
回复 使用道具 举报
comparator接口是用来实现比较性的,如果类本身的比较性不是所需要的,就需要实现此接口,重写compare方法,或者是实现comparable接口,这个接口是用来让本身没有比较性的类,让它的容器具备比较性。
回复 使用道具 举报
TreeSet是排序树,所以当你要将你对象做排序处理最好使用这种结构。但一定记住要么实现自然排序,要么实现比较器接口。否则是会出问题的。
回复 使用道具 举报
已经有大神回复了。。。。。。
回复 使用道具 举报
因为TreeSet需要排序才能将数据存入集合。如果你想存入自定义的对象,而又没有进行处理,TreeSet是不知道怎么存,当然会报错。
回复 使用道具 举报
TreeSet集合排序的两种方式: 一,让元素自身具备比较性。 也就是元素需要实现Comparable接口,覆盖compareTo 方法。 这种方式也作为元素的自然排序,也可称为默认排序。二,让容器自身具备比较性,自定义比较器。 需求:当元素自身不具备比较性,或者元素自身具备的比较性不是所需的。 那么这时只能让容器自身具备。 定义一个类实现Comparator 接口,覆盖compare方法。 并将该接口的子类对象作为参数传递给TreeSet集合的构造函数。 当Comparable比较方式,及Comparator比较方式同时存在,以Comparator 比较方式为主。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马