API学习TreeSet

来源:互联网 发布:携程国际业务部 知乎 编辑:程序博客网 时间:2024/06/03 21:34
package com.wonders.week01.collection;import java.util.Comparator;import java.util.Iterator;import java.util.NavigableSet;import java.util.SortedSet;import java.util.TreeSet;/** * JDK1.7 * TreeSet * (1)继承自AbstractSet,实现了Set接口和SortedSet及NavigableSet接口 * (2)NavigableSet接口的实现是基于TreeMap的,元素的顺序是使用它们的自然排序,或者是在设置创建时提供的比较器,这取决于使用的构造函数 * (3)对于add, remove 和contains的实现的操作的算法时间复杂度是log(n) * (4)TreeSet是一个非线程安全的类 * (5)请注意,如果要正确地实现set接口,那么一个set(无论是否提供显式比较器)所维护的排序必须与equals保持一致 * 可以通过阅读Comparator 或者Comparable对于与equals保持一致定义会有更加细致的了解。这是因为Set接口是在equals操作的条件下定义的 * 但是TreeSet实例使用它的compareTo(或compare)方法执行所有元素比较。从Set集合的角度来看,equals个方法被认为等于的两个元素是相等的 * (6)既是集合的顺序与equals不保持一致,但是集合的行为是被定义好的,它只能遵守Set接口的一般规则。 * @author liyongyong * */public class TreeSetTest {    public static void main(String[] args) {        TreeSet<Integer> treeSet = new TreeSet<Integer>();        TreeSet<Integer> tSet = new TreeSet<Integer>();        //向集合中添加元素,如果元素不存在则添加到集合中返回true,如果集合中存在此元素,则返回false,原来存在的元素不会改变        treeSet.add(1);        treeSet.add(2);        treeSet.add(3);        tSet.add(4);        tSet.add(5);        tSet.add(7);        //返回treeset集合元素的个数        int size = treeSet.size();        System.out.println("集合元素个数是 : " + size);        //返回set集合中元素的迭代,按照升序的顺序进行迭代        Iterator<Integer> result = treeSet.iterator();        while (result.hasNext()) {            Integer integer = (Integer) result.next();            System.out.print(integer + "  ");        }        System.out.println();        //返回set集合中元素的迭代,按照降序的顺序进行迭代        Iterator<Integer> res = treeSet.descendingIterator();        while (res.hasNext()) {            Integer integer = (Integer) res.next();            System.out.print(integer + "  ");        }        System.out.println();        //返回set集合中元素的迭代,按照降序的顺序进行迭代        NavigableSet<Integer>  num =tSet.descendingSet();        for (Integer integer : num) {            System.out.print( integer + "  ");        }        System.out.println();        //判断集合是否为空,为空返回true,否则返回false        boolean empty = treeSet.isEmpty();        System.out.println("集合是否为空: " + empty);        //判断集合中是否包含此元素        boolean contains = treeSet.contains(1);        System.out.println("集合中是否包含此对象 : " + contains);        //从集合中移除一个对象,如果移除成功返回true,否则返回false        boolean remove = treeSet.remove(1);        System.out.println("集合中的元素1是否被成功移除 : " + remove);        //移除掉该集合中的所有元素,没有返回值        //treeSet.clear();        //把集合中元素添加到Set中        treeSet.addAll(tSet);        for(Integer integer:treeSet){            System.out.print(integer + "    ");        }        System.out.println();        //返回该集合的部分视图,其元素范围从fromElement到toElement。        //第一个参数表示从哪个元素开始,第三个元素表示到哪个元素截止        //第二个元素为true表示包含开始元素,为false表示不包含开始元素        //第四个元素为true表示包含结尾元素,为false表示不包含结束元素        NavigableSet<Integer> integer = treeSet.subSet(3, true, 4, true);        for (Integer result1 : integer) {            System.out.print( result1 + "  ");        }        System.out.println();        //返回集合中的一部分数据,返回的集合数据是当第二个参数为true时,小于或者等于第一个参数的值        NavigableSet<Integer> num1 = treeSet.headSet(4,true);        for (Integer integer2 : num1) {            System.out.print(integer2 + " ");        }        System.out.println();        //返回集合中的一部分数据,返回的集合数据是当第二个参数为true时,大于或者等于第一个参数的值        NavigableSet<Integer> num2 = treeSet.tailSet(3,true);        for (Integer integer2 : num2) {            System.out.print(integer2 + " ");        }        System.out.println();        //返回集合中的一部分数据,开始元素是第一个参数,结束元素是第二个参数。        //结果是包含开始元素,不包含结束元素        SortedSet<Integer> sort = treeSet.subSet(2, 4);        for(Integer nuInteger:sort){            System.out.print(nuInteger + "  ");        }        System.out.println();        //返回的结果集是完全小于指定元素的集合中的元素        SortedSet<Integer> rSet = treeSet.headSet(4);        for(Integer in:rSet){            System.out.print(in + " ");        }        System.out.println();        //返回集合中的子集,子集的元素是大于或者等于指定元素的值        SortedSet<Integer> integers = treeSet.tailSet(3);        for(Integer s:integers){            System.out.print(s +  " ");        }        //返回用于在此集合中排序元素的比较器,如果该集合使用元素的自然排序,则返回null        Comparator<? super Integer>  c = treeSet.comparator();        System.out.println(c);        //返回该集合中元素最小的一个        Integer first = treeSet.first();        System.out.println("集合中的最小值是 : " + first);        //返回集合中元素最大的一个        Integer last = treeSet.last();        System.out.println("集合中的最大值是: " + last);        //返回这个集合中最大的元素小于或等于给定元素,如果没有这样的元素,则返回null。        Integer sInteger =treeSet.floor(4);        System.out.println("小于或者等于指定元素的最大值是 : " + sInteger);        //返回这个集合中最小元素大于或等于给定元素,如果没有这样的元素,则返回null        Integer rInteger = treeSet.ceiling(5);        System.out.println("大于或者等于指定元素的最小值是 : " + rInteger);        //返回集合中完全大于指定元素的最小的元素,如果不存在这样的元素,则返回null        Integer zd = treeSet.higher(3);        System.out.println("大于指定元素的值是 : " + zd);        //返回这个集合中最大的元素,严格小于给定的元素,如果没有这样的元素,则返回null        Integer max = treeSet.lower(4);        System.out.println("严格小于给定的元素的元素是 : " +max);        //检索并删除第一个(最低)元素,或者如果这个集是空的,则返回null        Integer pollFirst = treeSet.pollFirst();        System.out.println("最低的元素是 : " + pollFirst);        //检索并删除最后一个(最高)元素,或者如果这个集是空的,则返回null        Integer pollLast = treeSet.pollLast();        System.out.println("最高的元素是 : " + pollLast);    }}

这里写图片描述

原创粉丝点击