SortedSet接口的实现类TreeSet介绍和实现Comparator自定义排序比较器

发布于 2011-10-16 | 更新于 2020-09-20

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{

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

}

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

TreeSet treeSet = new TreeSet(new ScoreComparator());

本文作者: arthinking

本文链接: https://www.itzhai.comtreeset-sortedset-interface-implementation-class-introduction-and-implementation-of-comparator-comparator-custom-sort.html

版权声明: 版权归作者所有,未经许可不得转载,侵权必究!联系作者请加公众号。

×
IT宅

关注公众号及时获取网站内容更新。