2013-01-17 132 views
10

在Java中冒號是什麼意思?我有這樣的:結腸在Java中意味着什麼?

public static List<String> findAllAnagrams(List<String> words) { 
    List<String> result = new LinkedList<String>(); 
    for(String i : words){ 
     for (String j : words){ 
      if (result.contains(i)) { 
       break; 
      } 
      else if (i == j) { 

      } else { 
       if (areAnagrams(i,j)){ 
        result.add(i); 
        System.out.println(result); 
       } 
      } 
     } 
    }   
    return result; 
} 
+1

這被稱爲for-each循環,您可能希望Google現在,沒有任何答案已經命名它。 – 11684

+0

可能重複[每個循環的Java如何工作?](http://stackoverflow.com/questions/85190/how-does-the-java-for-each-loop-work) –

+1

這個問題的答案似乎不完整:這是什麼:import hudson.model.SCMS; (...) SCMS:for(SCM scm:scmTriggerItem。getSCMs()){something();}? – Gustave

回答

5
(String i : words) 

對於words

每個項目:指示迭代器項目和項目爲i

這樣回答 - 它代表for-each循環

12

這意味着一件事,它是一個增強的循環。

for (String i: words) 

意味着同樣的事情

for (int i = 0; i < words.length; i++) { 
    // 
} 

約書亞布洛赫,他值得一讀有效的Java的項目46,表示如下:

的的for-each循環,在版本1.5中引入,通過完全隱藏迭代器或索引變量消除了混亂和錯誤的機會。得到的成語同樣適用於集合和數組:

的首選成語用於遍歷集合和數組

for (Element e : elements) { 
    doSomething(e); 
} 

當你看到冒號(:),把它讀作「的。」 因此,上面的循環讀爲「對於元素中的每個元素e」。請注意,使用for-each循環沒有性能損失,即使對於數組也是如此。實際上,在某些情況下,它可能會比普通的for循環提供輕微的性能優勢,因爲它僅計算一次數組索引的限制。雖然你可以手工完成(項目45),程序員並不總是這樣做。

+0

它相同,但它們對於JVM是否確實一樣? – 11684

+0

不,他們不一樣。 foreach用於集合,其中可以從集合中可用的元素數量推斷出循環的長度。無論哪種方式,你都可以做到,但foreach是利用集合的語法糖。 – Abraham

+0

在這種情況下,你能否將其納入你的答案? OP可能不是一位有經驗的Java開發人員,我認爲最好從一開始就學習正確的東西。 – 11684

0

這是for-each循環。當您看到冒號(:)時,將其解讀爲「in」 您可以在包含示例的Oracle文檔中找到非常好的解釋,here