2013-01-17 102 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