一、TreeSet介绍
1、用于对元素排序的有序集合类,集合中的元素是自然排序的,也不能有重复的元素
2、通过实现Comparable接口来完成对元素的排序。该接口中定义了int compareTo(To o)方法
示例代码:
import java.util.TreeSet;
import java.util.Iterator;
public class TreeSetTest{
public static void main(String[] args){
TreeSet<String> ts = new TreeSet<String>();
ts.add("red");
ts.add("green");
ts.add("yellow");
ts.add("red");
System.out.println("size:"+ts.size());
Iterator it = ts.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
System.out.println("first:"+ts.first());
System.out.println("last:"+ts.last());
System.out.println("subset:"+ts.subSet("green","yellow"));
[color=red]//System.out.println("subset2:"+ts.subSet("red","green"));[/color]
ts.remove("green");
System.out.println("removed size:"+ts.size());
ts.clear();
System.out.println("cleared size:"+ts.size());
}
}
执行结果:
size:3
green
red
yellow
first:green
last:yellow
subset:[green, red]
removed size:2
cleared size:0
如果将上面的注释部分放开,执行的时候会抛出IllegalArgumentException:
因为TreeSet是按自然顺序排序的,所以要保证fromKey < toKey。这里red>green,所以不可以。
[color=red][b]注意:subSet方法返回的元素从fromKey开始,到toKey的前一个元素结束(不包括toKey)[/b][/color]
size:3
green
red
yellow
first:green
last:yellow
subset:[green, red]
[color=red]Exception in thread "main" java.lang.IllegalArgumentException: fromKey > toKey[/color]
at java.util.TreeMap$NavigableSubMap.<init>(TreeMap.java:1240)
at java.util.TreeMap$AscendingSubMap.<init>(TreeMap.java:1677)
at java.util.TreeMap.subMap(TreeMap.java:862)
at java.util.TreeSet.subSet(TreeSet.java:308)
at java.util.TreeSet.subSet(TreeSet.java:344)
at TreeSetTest.main(TreeSetTest.java:21)
1、用于对元素排序的有序集合类,集合中的元素是自然排序的,也不能有重复的元素
2、通过实现Comparable接口来完成对元素的排序。该接口中定义了int compareTo(To o)方法
示例代码:
import java.util.TreeSet;
import java.util.Iterator;
public class TreeSetTest{
public static void main(String[] args){
TreeSet<String> ts = new TreeSet<String>();
ts.add("red");
ts.add("green");
ts.add("yellow");
ts.add("red");
System.out.println("size:"+ts.size());
Iterator it = ts.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
System.out.println("first:"+ts.first());
System.out.println("last:"+ts.last());
System.out.println("subset:"+ts.subSet("green","yellow"));
[color=red]//System.out.println("subset2:"+ts.subSet("red","green"));[/color]
ts.remove("green");
System.out.println("removed size:"+ts.size());
ts.clear();
System.out.println("cleared size:"+ts.size());
}
}
执行结果:
size:3
green
red
yellow
first:green
last:yellow
subset:[green, red]
removed size:2
cleared size:0
如果将上面的注释部分放开,执行的时候会抛出IllegalArgumentException:
因为TreeSet是按自然顺序排序的,所以要保证fromKey < toKey。这里red>green,所以不可以。
[color=red][b]注意:subSet方法返回的元素从fromKey开始,到toKey的前一个元素结束(不包括toKey)[/b][/color]
size:3
green
red
yellow
first:green
last:yellow
subset:[green, red]
[color=red]Exception in thread "main" java.lang.IllegalArgumentException: fromKey > toKey[/color]
at java.util.TreeMap$NavigableSubMap.<init>(TreeMap.java:1240)
at java.util.TreeMap$AscendingSubMap.<init>(TreeMap.java:1677)
at java.util.TreeMap.subMap(TreeMap.java:862)
at java.util.TreeSet.subSet(TreeSet.java:308)
at java.util.TreeSet.subSet(TreeSet.java:344)
at TreeSetTest.main(TreeSetTest.java:21)