2012-12-04 90 views
0
HashSet<String> noDuplicate = new HashSet<String>(); 
for(int i=0;i<strings.length;i++) 
{ 
    for(int a=0;a<strings2.length;a++) 
    { 
     if(noDuplicate.get(i).equals(strings2[a])) 
      //blahblah code here 
    } 
} 

卻得到不工作,我不知道如何使用迭代器,如果這對使用要經過的HashSet的元素的方法。我想要做的事情如下:如何比較hashset的元素?

for(int i=0;i<strings.length;i++) 
{ 
    for(int a=0;a<strings2.length;a=a+2) 
    { 
     if(node_marked_array.get(i).equals(strings2[a])) 
      //blahblah code here 
    } 
} 

但我被告知使用hashset,因爲重複的值。

+3

我已經給你在這個問題的代碼在你的其他問題:http://stackoverflow.com/questions/13710668/how-do-i-put-only-unique-values-into-an-array/13710797 #13710797 – durron597

+1

你想要做什麼?你想檢查一下'Set'是否包含來自'strings'數組的值?或者是什麼? – bellum

+0

是的,這就是我想要做的 – BubbleTree

回答

1

使用HashSet#contains代替:

HashSet<String> noDuplicate = new HashSet<String>(); 
for(int i=0;i<strings.length;i++){ 
    for(int a=0;a<strings2.length;a++){ 
     if(noDuplicate.contains(strings2[a])) 
     //blahblah code here 
    } 
} 
1

Set S按定義沒有順序,並且因此不能被索引像經由get方法陣列或列表。然而可以通過一個Set的與for-each循環(或通過使用由iterator()方法返回的迭代)的元素仍然迭代。

舉例來說,如果我有一個Set稱爲set含有字符串"a""b""c"

for (String s : set) { 
    System.out.println(s); 
} 
 
a 
b 
c 
+0

由於沒有順序無關,與不具有'得到()'方法。請參閱'HashMap'作爲反例。 – EJP

+0

@EJP我已經澄清了答案。 – arshajii

-1

我想這會幫助

Iterator iter=hm.keySet().iterator(); 
      while(iter.hasNext()){ 
       String key = (String)iter.next(); 
      if(key.equals(str)){ 
        val1 = (String)hm.get(key); 
       } 
      }