Синтаксис Java для цикла: "for (T obj: objects)" - PullRequest
48 голосов
/ 14 октября 2011

Я столкнулся с неким синтаксисом Java, которого раньше не видел.Мне было интересно, может кто-нибудь сказать мне, что здесь происходит.

for (ObjectType objectName : collectionName.getObjects())

Ответы [ 7 ]

98 голосов
/ 14 октября 2011

Это называется для каждого или расширенный оператор for. См. JLS & sect; 14.14.2 .

Это синтаксический сахар , предоставляемый компилятором для итерации по Iterable с и массивам. Ниже приведены эквивалентные способы перебора списка:

List<Foo> foos = ...;
for (Foo foo : foos)
{
    foo.bar();
}

// equivalent to:
List<Foo> foos = ...;
for (Iterator<Foo> iter = foos.iterator(); iter.hasNext();)
{
    Foo foo = iter.next();
    foo.bar();
}

и это два эквивалентных способа перебора массива:

int[] nums = ...;
for (int num : nums)
{
    System.out.println(num);
}

// equivalent to:
int[] nums = ...;
for (int i=0; i<nums.length; i++)
{
    int num = nums[i];
    System.out.println(num);
}

Дальнейшее чтение

5 голосов
/ 14 октября 2011

Переменная objectSummary содержит текущий объект типа S3ObjectSummary , возвращенный из objectListing.getObjectSummaries () и выполняет итерацию по коллекции.

Вот пример этого улучшенного цикла из Java Tutorials

class EnhancedForDemo {
 public static void main(String[] args){
      int[] numbers = {1,2,3,4,5,6,7,8,9,10};
      for (int item : numbers) {
        System.out.println("Count is: " + item);
      }
 }
}

В этом примере элемент переменной содержит текущее значение из массива чисел.

Вывод выглядит следующим образом:

Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
Count is: 10

Надеюсь, это поможет!

4 голосов
/ 18 марта 2013

да ... Это для каждого цикла в java.

Обычно этот цикл становится полезным, когда вы извлекаете данные или объект из базы данных.

Синтаксис:

for(Object obj : Collection obj)
{
     //Code enter code here
}

Пример:

for(User user : userList)
{
     System.out.println("USer NAme :" + user.name);
   // etc etc
}

Это для каждого цикла.

будет увеличиваться автоматически.по одному от коллекции до объекта USER данные объекта были заполнены.и работает.

2 голосов
/ 14 октября 2011

для каждого S3ObjecrSummary в objectListing.getObjectSummaries ()

проходит по каждому элементу в коллекции

2 голосов
/ 14 октября 2011

Это для каждого синтаксиса цикла.Он проходит по каждому объекту в коллекции, возвращенной objectListing.getObjectSummaries().

1 голос
/ 24 мая 2016
public class ForEachLoopExample {

    public static void main(String[] args) {

        System.out.println("For Each Loop Example: ");

        int[] intArray = { 1,2,3,4,5 };

        //Here iteration starts from index 0 to last index
        for(int i : intArray)
            System.out.println(i);
    }

}
1 голос
/ 18 декабря 2013

Да, это называется цикл for-each.Объекты в collectionName будут присваиваться один за другим с начала этой коллекции для ссылки на созданный объект 'objectName'.Таким образом, на каждой итерации цикла объекту nameName присваивается объект из коллекции collectionName.Цикл завершится один раз, когда все элементы (объекты) из коллекции collectionName закончили присваивать или просто объекты, которые нужно получить, закончились./ loop body> // Вы можете использовать «objectName» здесь по мере необходимости, и различные объекты будут // повторно представляться им на каждой итерации.}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...