0

我想通过提供一些范围来迭代 java 集。就像我可以为列表做的一样..

//for list
int startRange=3;
int endRange = 5; 
List list = myList();
for (int i=startRange;i<endRange;i++){
    System.out.println(list.get(i));
}

现在我想在 startRange 和 endRange 中迭代下面的 java 集合

Set<String> set = new java.util.HashSet<String>(list);

谢谢。

4

5 回答 5

3
int count =0, min= 3 , max = 5;
Set<String> s = new HashSet<String>();

Iterator<String> itr  = s.iterator();

while (itr.hasNext()) {
    if ( count > min && count < max ) {
        //Do something
    }
    count++;
}
于 2012-09-16T05:52:45.217 回答
2

您可以使用LinkedHashSet并维护订单。

于 2012-09-16T06:01:11.127 回答
0

集合未排序使用类 LinkedHashSet

于 2012-09-16T06:00:13.560 回答
0

请参阅下面的评论

@alfasin 是正确的;List包含对其元素的总排序,但HashSet没有这样的东西......您应该List.listIterator在原始代码中使用。

话虽如此,对于其他类型的Sets 也有类似的东西,它们确实强加了一个总顺序 - SortedSets。存在一个类似的subSet, 以及headSettailSet具有相似的功能。这些也NavigableSet与其他方法一起存在,如ceiling,floor等。

请注意,这里的订单不太相似。Listorder 本质上是任意的,无论用户想要什么,而SortedSets order 使用比较排序。

于 2012-09-16T05:57:00.893 回答
0
//You can change the Set to Array and then iterate over a range.

Set<Integer> set = new TreeSet<Integer>();
for (int i = 0; i <= 100; i++) {
         set.add(i);
    }
Object[] array = set.toArray();


for (Integer i = 0; i < 100; i++) {
        System.out.print(array[i] + " ,");
    }
于 2013-08-21T10:32:28.663 回答