基于TreeMap的NavigableSet的实现,使用元素的自然顺序(从小到大)对元素进行排序,此实现不是同步的。
TreeSet中的元素是不重复的
TreeSet<Integer> set = new TreeSet<>();
for(int i=0;i<10;i++) {
set.add(i);
}
set.add(4);
//将指定的collection中的所有元素添加到set中
TreeSet<Integer> set2 = new TreeSet<>();
set2.add(12);
set.addAll(set2);
//返回set中的大于等于给定元素的最小元素,如果不存在就返回null
System.out.println(set.ceiling(12));
//返回set中的严格大于等于给定元素的最小元素,如果不存在就返回null
System.out.println(set.higher(12));
//清除所有元素
set.clear();
//确定集合中是不是包含元素
System.out.println(set.contains(23));
//返回在此set中的按照降序进行排序的迭代器
Iterator<Integer> it= set.descendingIterator();
//返回在此set中的按照自然顺序排序的迭代器
Iterator<Integer> it2 = set.iterator();
//获取并移除第一个(最低的元素),如果set为空就返回null
System.out.println(set.pollFirst());
//获取并且移除最后一个(最高的元素)
System.out.println(set.pollLast());
//返回这个set中的第一个元素
System.out.println(set.first());
//返回这个set中的最后一个元素
System.out.println(set.last());
//返回这个set中所包含的元素的逆序视图,降序set受这个set的支持,因此对于这个set的更改将反映在降序set中,反之亦然,如果对任何一个set在进行迭代期间,同时修改了任何一个set,则迭代结果是不确定的
NavigableSet<Integer> ser = set.descendingSet();
ser.remove(-1);
返回的逆序视图是跟原来的set有关联的,浅复制
//返回这个set中所包含的元素的逆序视图,降序set受这个set的支持,因此对于这个set的更改将反映在降序set中,反之亦然,如果对任何一个set在进行迭代期间,同时修改了任何一个set,则迭代结果是不确定的
NavigableSet<Integer> ser = set.descendingSet();
ser.remove(-1);
//返回此set的部分视图,其元素范围从fromElement 到 toElement,返回的set受此set的支持,所以在返回set中的更改将反映在此set中
SortedSet<Integer> s = set.subSet(3,9);
//返回这个set的部分视图,其元素小于(或者等于 如果第二个参数为true) 返回的set受此set的支持,所以在返回set中的更改将反映在此set中
NavigableSet<Integer> ss = set.headSet(8,true);
//返回这个set的部分视图,其元素大于(或者等于 如果第二个参数为true) 返回的set受此set的支持,所以在返回set中的更改将反映在此set中
NavigableSet<Integer> sss = set.tailSet(5, true);