Java中的集合-TreeSet

一、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"));
//System.out.println("subset2:"+ts.subSet("red","green"));
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,所以不可以。

注意:subSet方法返回的元素从fromKey开始,到toKey的前一个元素结束(不包括toKey)

size:3
green
red
yellow
first:green
last:yellow
subset:[green, red]
Exception in thread "main" java.lang.IllegalArgumentException: fromKey > toKey
        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)

你可能感兴趣的:(java,thread)