Java per la sintassi del ciclo: "per (T obj: obj)"


Mi sono imbattuto in una sintassi Java che non ho mai visto prima. Mi chiedevo se qualcuno potesse dirmi cosa sta succedendo qui.

for (ObjectType objectName : collectionName.getObjects())
Author: user2864740, 2011-10-14

7 answers

Si chiama per-ognio enhanced for istruzione. Vedere il JLS §14.14.2.

È zucchero sintattico fornito dal compilatore per l'iterazioneIterables e matrici. I seguenti sono modi equivalenti per iterare su un elenco:

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();
}

E questi sono due modi equivalenti per iterare su un array:

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);
}

Ulteriori letture

 90
Author: Matt Ball, 2017-05-23 12:09:52

La variabile objectSummarycontiene l'oggetto corrente di tipo S3ObjectSummaryrestituito da objectListing.getObjectSummaries () e iterare sulla raccolta.

Ecco un esempio di questo enhanced for loop da Tutorial Java

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);
      }
 }
}

In questo esempio, l'elemento variabile contiene il valore corrente dall'array numbers.

Uscita è la seguente:

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

Spero che questo aiuti !

 4
Author: HashimR, 2011-10-14 04:57:29

Sì... Questo è per ogni ciclo in java.

Generalmente questo ciclo diventa utile quando si recuperano dati o oggetti dal database.

Sintassi:

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

Esempio:

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

Questo è per ogni ciclo.

Sarà incrementale automaticamente. uno per uno dalla raccolta ai dati oggetto utente è stato riempito. e lavorare.

 4
Author: Pradip Bhatt, 2013-03-18 11:00:57

Questa è la sintassi per ogni ciclo. Sta scorrendo ogni oggetto nella raccolta restituita da objectListing.getObjectSummaries().

 2
Author: Joshua Rodgers, 2011-10-14 04:48:00

Per ogni S3ObjecrSummary in objectListing.getObjectSummaries()

Sta scorrendo ogni elemento della raccolta

 2
Author: Joe, 2011-10-14 04:48:02

Sì, è chiamato il ciclo for-each. Gli oggetti in collectionName verranno assegnati uno dopo l'altro dall'inizio di tale raccolta, al riferimento all'oggetto creato, 'objectName'. Quindi, in ogni iterazione del ciclo, a ' objectName 'verrà assegnato un oggetto dalla raccolta' collectionName'. Il ciclo terminerà una volta quando tutti gli elementi(oggetti) della raccolta 'collectionName' sono stati assegnati o semplicemente gli oggetti da ottenere sono finiti.

Per (ObjectType objectName: collectionName.Ottieni OGGETTI()){ // loop corpo> // Puoi usare 'objectName' qui come necessario e oggetti diversi saranno //reepresentati da esso in ogni iterazione. }

 1
Author: Samitha Chathuranga, 2013-12-18 14:16:16
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);
    }

}
 0
Author: Sidarth, 2016-05-24 19:39:09