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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 董志超 中级黑马   /  2012-10-28 07:02  /  1722 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

TreeSet可以对其集合中的元素进行排序,保证元素唯一性的依据是compareTo方法,return 0;
TreeSet排序的第一种方式是让元素自身具备比较性,实现Comparable接口,覆盖compareTo方法。
第二种方法是比较器,实现Comparator接口,覆盖compare方法。
问题:当集合中的元素是一些整数,整数包括奇数和偶数是,我要奇数在前,偶数在后,奇数升序,偶数降序。
        集合中再有一些字母组成的字符串呢?让字符串在数字之前,按字符串长度排序。
比较复杂,怎么办?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

1 个回复

倒序浏览
TreeSet排序无非两种,一是实现Comparable 二是实现Comparator,让类成为比较器
当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序。

Comparator
强行对某个对象collection进行整体排序的比较函数,可以将Comparator传递给Collections.sort或Arrays.sort。

Comparable
强行对实现它的每个类的对象进行整体排序,实现此接口的对象列表(和数组)可以通过Collections.sort或Arrays.sort进行自动排序。

Comparator和Comparable的区别
一个类实现了Camparable接口则表明这个类的对象之间是可以相互比较的,这个类对象组成的集合就可以直接使用sort方法排序。
Comparator可以看成一种算法的实现,将算法和数据分离,Comparator也可以在下面两种环境下使用:
1、类的设计师没有考虑到比较问题而没有实现Comparable,可以通过Comparator来实现排序而不必改变对象本身
2、可以使用多种排序标准,比如升序、降序等

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马