gpt4 book ai didi

Java,树集。我们可以从非第一个元素开始迭代元素吗?

转载 作者:行者123 更新时间:2023-12-01 09:56:12 25 4
gpt4 key购买 nike

美好的一天。

我使用TreeSet ,例如TreeSet<Integer> t 。我想打印集合 t 中 x 和 y 之间的所有数字。

void print(Integer x,Integer y, TreeSet<Integer> t){
...
}

怎么做呢?我当然可以得到t.iterator() ,并迭代集合中的所有数字并检查它是否大于 x 且小于 y。时间复杂度为y步。但如果 y-x 很小。最好先获取 t.higher(),然后迭代 set 中的元素,直到它小于 y。该解决方案可以用C++实现。其时间复杂度为log (t.size())+(y-x) .

用Java怎么做?

最佳答案

您可以使用SortedSet 接口(interface)(由TreeSet 实现)。例如:

SortedSet<Integer> set = new TreeSet<Integer>();

for (int i = 1; i <= 5; ++i) {
set.add(i);
}

int from = 2;
int to = 4;
for (int x : set.subSet(from, to+1)) { // Note that the higher bound is exclusive.
System.out.println(x);
}

输出:

2
3
4

关于Java,树集。我们可以从非第一个元素开始迭代元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37191778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com