Что означает "Колон" на 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 (String i: words) 

означает те же самые вещи, что и

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

Джошуа Блох, в пункте 46 его стоит прочитать Эффективная Java, говорит следующее:

Цикл for-each, введенный в версии 1.5, избавляется от беспорядка и возможности ошибки, полностью спрятав итератор или переменную индекса. Полученная идиома в равной степени относится к коллекциям и массивам:

Предпочтительная идиома для итерации над коллекциями и массивами

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

Когда вы видите двоеточие (:), прочитайте его как "in". Таким образом, вышеприведенный цикл читается как "для каждого элемента e в элементах". Обратите внимание, что для использования цикла for-each нет ограничений производительности даже для массивов. Фактически, он может предложить небольшое преимущество в производительности по сравнению с обычным циклом в некоторых случаях, поскольку он вычисляет предел индекса массива только один раз. Хотя вы можете сделать это вручную (пункт 45), программисты не всегда это делают.

Ответ 2

(String i : words)

Для каждого элемента в words

: указать элемент и элемент итератора как i

чтобы ответить - он представляет для каждого цикла

Ответ 3

двоеточие в для каждого цикла является частью синтаксиса, двоеточие также отображается с label

Ответ 4

Не думайте, что двоеточие (:) означает что-то особенное. Это как раз то, как разработчики Java считали, что в цикле и выражение

for ( FormalParameter : Expression ) Statement

Проверьте спецификацию языка для этого: http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.14.2

Ответ 5

Это для каждого цикла. Когда вы видите двоеточие (:) читайте его как "в", Вы можете найти очень хорошее объяснение в документах Oracle с включенными примерами, здесь