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);
}
}
API学习TreeSet
最新推荐文章于 2024-05-15 17:09:12 发布