繁体   English   中英

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

[英]Java, TreeSet. Can we iterate elements from not first element?

美好的一天。

我使用TreeSet ,例如TreeSet<Integer> t 而且我想从x和y之间的set t打印所有数字。

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

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

用Java怎么做?

您可以使用SortedSet接口( 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM