Java在范围内设置迭代

时间:2012-09-16 05:42:10

标签: java set

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

//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
Set<String> set = new java.util.HashSet<String>(list);

感谢。

5 个答案:

答案 0 :(得分: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++;
}

答案 1 :(得分:2)

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

答案 2 :(得分:0)

请参阅下面的my comment

  

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

话虽如此,其他类型Set的内容类似于强加总命令 - SortedSet。存在类似的subSet,以及具有类似功能的headSettailSet。这些也存在于NavigableSet以及ceilingfloor等其他方法中。

请注意,这里的订单并不那么相似。 List订单基本上是任意的,无论用户想要什么,而SortedSet订单使用比较排序。

答案 3 :(得分:0)

未使用Class LinkedHashSet

订购

答案 4 :(得分: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] + " ,");
    }