TreeSet

作者: 李霖神谷 | 来源:发表于2017-04-25 12:27 被阅读24次
import java.util.TreeSet;

public class JiHeDemo{
    public static void main(String[] args) {
        TreeSet<Integer> tr=new TreeSet<Integer>();
        tr.add(1);
        tr.add(2);
        tr.add(3);
        tr.add(4);
        TreeSet t1=(TreeSet) tr.headSet(4);
        TreeSet t2=(TreeSet)tr.tailSet(2);
        TreeSet t3=(TreeSet)tr.subSet(1,4);
        System.out.println(t1+"--"+t2+"--"+t3);
    }

    
}

根据上面的程序运行结果可以看出,TeerSet并不是根据元素的插入顺序来排序的,而是根据元素的实际大小的值来进行排序。
TreeSet采用的是二叉树的数据结构来储存集合元素的,TreeSet支持两种排序,自然排序,定制排序。
自然排序:
TreeSet会调用集合元素的compareTo方法来比较元素之间的大小关系,然后将集合元素按升序进行排序,这种方式为自然排序列obj1.comperTo(obj2)返回为0表明两对象相等,返回为正数则obj1大于obj2,返回负数则obj1小于obj2.
java的一些常用类已经实现了Comparable接口。下面是实现了Comparable接口的常用类:
BigDecimal,BigInteger以及所有数值型对应的包装类:按它们对应的数值大小来进行比较。
Character按字符的UNICODE值进行比较。
Boolean:true类型对应的包装类实例大于false对应的包装类实例。
String按照字符串中对应的字符的UNICODE值进行比较。
Date,Time:后面的时间日期比前面的时间日期大。
如果试图把一个对象添加到TreeSet集合中去,则该对象的类必须实现Comparable接口,否则将会抛出ClassCastException异常。

相关文章

网友评论

      本文标题:TreeSet

      本文链接:https://www.haomeiwen.com/subject/udhvzttx.html