SortedSet接口的实现类TreeSet介绍和实现Comparator自定义排序比较器
本文由发表于6年前 | Java基础 | 评论数 1 |  被围观 13,816 views+

SortedSet是一个接口,待排序集合,其一个比较常用的实现类是TreeSet。

TreeSet的add(E e)方法在每添加一个元素时 都会自动排序。

构造方法:
TreeSet()
构造一个新的空 set,该 set 根据其元素的自然顺序进行排序。
TreeSet(Collection<? extends E> c)
构造一个包含指定 collection 元素的新 TreeSet,它按照其元素的自然顺序进行排序。
TreeSet(Comparator<? super E> comparator)
构造一个新的空 TreeSet,它根据指定比较器(通过调用其compare(Object, Object)方法)进行排序。
创建自定义的Comparator比较器:

这里根据字符串的降序排序:

class MyComparator implements Comparator{

	@Override
	public int compare(Object o1, Object o2) {
		String s1 = (String)o1;
		String s2 = (String)o2;
		return s2.compareTo(s1);
	}
}

这样在构造方法中传入这个比较器,就可以按照比较规则进行排序了。

注意:如果TreeSet中保存的是一个对象,则一定要创建一个对象的比较器提供比较规则,否则会出错。下面是创建对象比较器的介绍。
创建对象的比较器:

这里我们使用到了Score对象:

class Score{

	private int score;
	public int getScore() {
		return score;
	}

	public void setScore(int score) {
		this.score = score;
	}

	public Score(int score){
		this.score = score;
	}

	@Override
	public String toString() {
		return String.valueOf(score);
	}
}

创建Score对象的比较器:

class ScoreComparator implements Comparator<Score>{

	@Override
	public int compare(Score o1, Score o2) {
		return o1.getScore() - o2.getScore();
	}
}

这样在创建TreeSet时传入这个比较器即可:

TreeSet<Score> treeSet = new TreeSet<Score>(new ScoreComparator());
除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/treeset-sortedset-interface-implementation-class-introduction-and-implementation-of-comparator-comparator-custom-sort.html
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 10/16
文章评论
    一条评论
  1. 向日葵 2014年02月05日12:33:50  #-49楼 回复 回复

    谢谢呀,讲得很清楚!~~~

给我留言

有人回复时邮件通知我
Java基础的相关文章
随机文章 本月热门 热评
1 数据结构笔记 – 排序算法 希尔排序算法 2011/9/21
2 JavaMail介绍和常用的API 一个较完整的发送电子邮件函数 2011/10/7
3 JSP的运行机制与原理 2011/6/17
4 碰撞球(连连看)游戏 连连看匹配算法分析与实现思路 2012/4/10
5 操作系统接口-用户接口 程序接口 系统调用 2011/6/30
6 ThreadPoolExecutor的使用和介绍 2012/7/30
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.