2012-09-16 65 views
0

我要遍歷的Java提供一些範圍內。就像我可以列表做到這一點..的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)); 
} 

現在我想重複下面的java在startRange上方設置類似範圍和結束範圍

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

感謝。

+10

'HashSet'不排序... – alfasin

+3

@alfasin是正確的; 'List'包含其元素的總排序,但'HashSet'沒有這種東西...... PS你應該在你的原始代碼中使用'List.listIterator'。 – oldrinb

+0

假設你想在一組對象包裝它來刪除列表中的重複,你可以回到使用'名單 newList =新的ArrayList (集)的列表;'並通過迭代,對不對? – Vikdor

回答

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++; 
} 
0

請參閱下面的my comment

@alfasin是正確的; List包括其要素的總體排序,但HashSet沒有這樣的事情...... PS,你應該在你原來的代碼中使用List.listIterator

話雖這麼說,對於其他類型的Set s表示處以總訂貨類似的東西 - SortedSet秒。存在一個類似的subSet,以及headSettailSet具有類似的功能。這些也存在於NavigableSet以及其他方法,如ceiling,floor等。

請注意,這裏的訂單不是那麼相似。 List訂單本質上是任意的,無論用戶想要什麼,而SortedSet的訂單使用比較排序。

2

您可以使用LinkedHashSet和維護秩序。

+1

這仍然沒有提供任何用途。 'LinkedHashSet'公開了與'HashSet'相同的功能,只有它的'iterator'使用插入順序。 – oldrinb

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] + " ,"); 
    }