您的位置:首页 > 编程语言 > Java开发

Java集合框架复习之规则集Set-TreeSet(五)

2016-04-11 21:03 295 查看
在开发文档上,可以看到TreeSet所有已实现的接口:

Serializable, Cloneable, Iterable<E>, Collection<E>, NavigableSet<E>, Set<E>,SortedSet<E>

在里面有NavigableSet<E>和SortedSet<E>,通过开发文档,又发现NavigableSet接口是扩展了SortedSet接口,再找SortedSet接口,发现它实现了Set接口。

1.先看SortedSet:

进一步提供关于元素的总体排序 的 Set。这些元素使用其自然顺序进行排序,或者根据通常在创建有序 set 时提供的 Comparator 进行排序。该 set 的迭代器将按元素升序遍历 set。提供了一些附加的操作来利用这种排序。

Comparator<? superE>
comparator()


返回对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的自然顺序,则返回null。
E
first()


返回此 set 中当前第一个(最低)元素。
SortedSet<E>
headSet(E toElement)


返回此 set 的部分视图,其元素严格小于 toElement。
E
last()


返回此 set 中当前最后一个(最高)元素。
SortedSet<E>
subSet(E fromElement,E toElement)


返回此 set 的部分视图,其元素从 fromElement(包括)到 toElement(不包括)。
SortedSet<E>
tailSet(E fromElement)


返回此 set 的部分视图,其元素大于等于 fromElement。
2.NavigableSet

扩展了SortedSet,并提供一些导航方法lower(e),floor(e),ceiling(e)和higher(e)以分别返回小于,小于或等于,大于或等于以及大于一个给定元素的元素,如果没有这样的元素,返回null。方法pollFirst()和pollLast()会分别删除和返回树形集中的第一个元素和最后一个元素。

3.TreeSet

只要对象是可以互相比较的,就可以将它们添加到一个树形集中。

两种比较对象的方法

(1)使用Comparable接口。compareTo方法

(2)如果类的元素没有实现Comparable的接口,或者不想用compareTo方法进行比较,可以指定一个比较器。

4.比较器接口Comparator,它的两个方法,compare和equals

注意一下equals方法的特殊

(1)public int compare(Object element1,Object element2) 如果element1小于element2,就返回一个负值,如果element1大于element2,就返回一个正值,若相等,放回0

(2)public boolean equals(Object element) 如果指定的对象也是一个比较器,并且与这个比较器具有相同排序,则返回true

5.定义一个比较器,实现Comparator接口和Serializable接口

实现Serializable可以被用作像TreeSet这样的可序列化数据接口的排序方法,为了使数据结构能成功序列化,比较器必须提供Serializable接口

public class classnameComparator implements Comparator<People> ,java.io.Serializable{

......

}

如果使用TreeSet的无参构造方法,而且元素的类实现了Comparable接口,那么可以用compareTo方法来比较集合内的两个元素。

如果要使用比较器,必须使用TreeSet(Comparator comparator)创建一个有序集,它能使用比较器中的compare方法对集合内的元素进行比较

Set<classname> set=new TreeSet<classname>(new classnameComparator());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: