Java,TreeSet。我们是否可以迭代不是第一个元素的元素?
问题描述:
美好的一天。Java,TreeSet。我们是否可以迭代不是第一个元素的元素?
我使用TreeSet
,例如TreeSet<Integer> t
。 而且我想从x和y之间的set t中打印所有数字。
void print(Integer x,Integer y, TreeSet<Integer> t){
...
}
怎么办? 当然,我可以得到t.iterator()
,并且从set和check中迭代所有数字是伟大的x和更少的y。 时间复杂度是y步骤。 但如果y-x很小。得到t.higher()会更好,然后迭代set中的元素直到它小于y。 该解决方案可以用C++实现。 时间复杂度为log (t.size())+(y-x)
。
在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
't.subSet(X,Y)'。 –
't.subSet(x,false,y,false)'如果你的意思是'x zapl