Java中的TreeSet headSet()方法及示例
Java中的TreeSet是一种数据结构,它继承了SortedSet接口并实现了NavigableSet接口。TreeSet中的元素具有自然顺序,或者根据用户指定的Comparator进行排序。TreeSet中的每个元素都是唯一的,不允许存储null元素。
在TreeSet中,headSet()方法返回一个由小于指定元素的元素组成的集合。
方法定义
public SortedSet<E> headSet(E toElement);
public NavigableSet<E> headSet(E toElement, boolean inclusive);
headSet()方法接收一个参数toElement,表示截取的上界。可选的参数inclusive表示是否包含toElement本身。
方法headSet(E toElement)返回一个SortedSet,而方法headSet(E toElement, boolean inclusive)则返回一个NavigableSet。
示例
创建一个包含几个元素的TreeSet,截取小于某个元素的子集并进行遍历。
import java.util.TreeSet;
import java.util.SortedSet;
public class TreeSetDemo {
public static void main(String[] args) {
TreeSet<Integer> set = new TreeSet<>();
set.add(1);
set.add(2);
set.add(3);
set.add(4);
set.add(5);
// 获取小于3的元素
SortedSet<Integer> headSet = set.headSet(3);
// 遍历集合
for(Integer i : headSet) {
System.out.println(i);
}
}
}
程序输出:
1
2
在以上示例中,我们通过headSet()方法获取小于3的元素,并将结果存储在SortedSet
我们还可以使用inclusive参数包含指定的元素:
// 获取小于等于3的元素
NavigableSet<Integer> headSet = set.headSet(3, true);
在这里,headSet()方法返回一个NavigableSet
特别注意
由于TreeSet是按照元素升序排列的,因此类中必须要实现Comparable接口或传入自定义的Comparator来指定元素排序。
这也是为什么TreeSet不允许存储null元素,因为如果要比较的对象为null时会报NullPointerException异常,所以必须提供非null元素以便进行比较。
结论
headSet()方法是Java中TreeSet类中的一个实用方法,它可以返回小于指定元素的元素的集合。在使用该方法时,应注意指定的元素必须是在TreeSet中可以进行自然顺序或者自定义排序的类型,并且必须是非null的。