sortedset 是一个接口,已经实现类有两个treeset和concurrentskiplistset,sortedset中的所有元素必须实现comparable接口。
sortedset 是有序set,按自然顺序或者构造方法是提供的comparator进行排序。
sortedset 要求实现类至少提供四种构造方法:不带参数、带一个comparator参数、带一个collection参数、带一个sortedset参数。
接口方法:
comparator():返回此set的比较器。
first():返回set中的第一个元素
last();返回set中的最后一个元素
headset(E e):返回一个新的sortedset,所有元素均严格少于e
tailset(E e):返回一个新的sortedset,所有元素均不少于e
subset(E begin, E end);返回一个新的sortedset,包括begin,不包括end。
headSet,taliSet,subSet三个方法返回的子sortedset是一个视图,但它们的修改就是对父sortedset的修改。
treeset的内部有一个map,set的元素实际是存储在map中。
package util;
import java.util.Iterator;
import java.util.SortedSet;
import java.util.TreeSet;
/**
*
* @author yjmao
* @deprecated SortedSet的常用方法小结
* @version V1.0.0
* @see 这些元素使用其自然顺序进行排序,或者根据通常在创建有序 set 时提供的 Comparator 进行排序。
*/
public class LearnSortedSet {
public static void main(String[] args){
//easyMethod();
//hardMethod();
//直接定义的话是错的,因为HashSet是无序的,而SortedSet是有序的
//SortedSet<String> setH = new HashSet<String>();
SortedSet<String> set = new TreeSet<String>();
set.add("aaa");
set.add("bbb");
set.add("ccc");
set.add("ddd");
set.add("eee");
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()){
String s = iterator.next();
System.err.print(s + ",");
}
//first():返回此 set 中当前第一个(最低)元素。
String fe = set.first();
System.err.println("\n第一个元素:" + fe);
//last():返回此 set 中当前最后一个(最高)元素。
String le = set.last();
System.err.println("最后一个元素:" + le);
//headSet():返回此 set 的部分视图,其元素严格小于 toElement。
System.err.print("集合中小于ccc(不包括)的元素:");
SortedSet<String> headE = set.headSet("ccc");
Iterator<String> iteratorH = headE.iterator();
while(iteratorH.hasNext()){
String s = iteratorH.next();
System.err.print(s + ",");
}
//tailSet():返回此 set 的部分视图,其元素大于等于 fromElement。
System.err.print("\n集合中大于ccc(包括)的元素:");
SortedSet<String> tailE = set.tailSet("ccc");
Iterator<String> iteratorE = tailE.iterator();
while(iteratorE.hasNext()){
String s = iteratorE.next();
System.err.print(s + ",");
}
//subSet():返回此 set 的部分视图,其元素从 fromElement(包括)到 toElement(不包括)。
System.err.print("\n集合中在ccc(包括)和eee(不包括)之间的元素:");
SortedSet<String> subE = set.subSet("ccc", "eee");
Iterator<String> iteratorT = subE.iterator();
while(iteratorT.hasNext()){
String s = iteratorT.next();
System.err.print(s + ",");
}
}
}