MST
星途 面试题库

面试题:Java中如何利用TreeSet实现简单的范围查询

假设你有一个TreeSet存储了一些整数,要求编写代码实现查询TreeSet中大于等于10且小于等于20的所有元素,并按升序输出。请描述实现思路并给出具体代码。
43.7万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 创建一个TreeSet并添加一些整数元素。
  2. 使用subSet方法获取TreeSet中大于等于10且小于等于20的子集。subSet方法有两个参数,第一个参数是子集的起始值(包含),第二个参数是子集的结束值(不包含),这里由于要包含20,所以使用subSet(10, 21)
  3. 遍历该子集并按升序输出其中的元素。

代码实现

import java.util.TreeSet;

public class TreeSetQuery {
    public static void main(String[] args) {
        TreeSet<Integer> treeSet = new TreeSet<>();
        treeSet.add(5);
        treeSet.add(15);
        treeSet.add(25);
        treeSet.add(10);
        treeSet.add(20);

        // 获取大于等于10且小于等于20的子集
        TreeSet<Integer> subSet = new TreeSet<>(treeSet.subSet(10, 21));

        // 按升序输出子集元素
        for (Integer num : subSet) {
            System.out.println(num);
        }
    }
}

说明

  1. 首先创建TreeSet对象treeSet并添加一些整数元素。
  2. 使用subSet(10, 21)获取大于等于10且小于等于20的子集,并将其存储在subSet中。
  3. 使用for - each循环遍历subSet,并将其中的元素按升序输出。由于TreeSet本身是有序的,所以subSet也是有序的。

如果使用其他编程语言,例如Python,可如下实现:

tree_set = {5, 15, 25, 10, 20}
sub_set = sorted([num for num in tree_set if 10 <= num <= 20])
for num in sub_set:
    print(num)

这里先使用列表推导式筛选出符合条件的元素,再用sorted函数进行升序排序,最后遍历输出。