Java de la boucle foreach préserver l'ordre?

Java de la boucle foreach, à commencer par la première de l'objet et de façon linéaire, c'est à la fin? Par exemple

String[] names = new String[] {"Zoe", "Bob", "Charlie", "Alex"};
for(String name : names) {
  //do stuff...
}

Est la chaîne de caractères "Zoé", toujours traitée en premier, suivi par "Bob", etc? Pas de tri qui se passe? Je l'ai testé moi-même et n'ai pas trouvé de tout, mais j'ai besoin d'une garantie et ne pouvait pas trouver quelque chose dans les docs.

  • réponse courte: oui, pour les tableaux, il ne. (un peu) plus longue réponse: cela dépend de l'objet que vous itérer sur
  • que diriez - Strings?
  • Question: pourquoi le tri (ou de toute autre modification) être appliquée que par l'aide d'une boucle (peu importe si vous l'utiliser foreach ou un itérateur directement)?
  • Peut-être que mon commentaire était trompeuse: Pour TOUS les tableaux (et arraylists) l'ordre est conservé intact. Pour les autres listes/jeux cela pourrait ne pas être vrai!
  • Pour un ordre récipient, tel qu'un tableau ou une liste, les éléments seront répétées dans le conteneur de l'ordre spécifié.
  • Je n'ai pas tellement dire "changer l'ordre" que dans, ne itérer sur eux dans l'ordre? Par exemple, il ne serait pas sauter de 0,2,1,3...
  • et Teo, je n'ai jamais prétendu qu'ils ont fait. Je voulais parler de processus de commande, pas l'ordre de tri.
  • il pourrait faire si vous êtes une itération sur une collection comme une HashMap, pour lequel l'itération de l'ordre n'est pas (nécessairement) de l'ordre d'insertion.
  • Reste la question contient: pourquoi itération est pas dans l'ordre prévu par la collection/ensemble? Comme d'autres l'ont déjà répondu à l'itération peut être déterminée par la collection (ou plus précisément son itérateur), mais il ne serait pas logique pour une boucle juste "jump around", tout juste de l'itération. Que de casser beaucoup de logique et n'entraînerait pas de code fiable.
  • For other lists ... this might not be true! vous avez raison, il pourrait ne pas être vrai, mais la définition d'une liste contient un certain/déterministe de l'ordre donc, si ce n'est pas vrai pour une certaine liste je préfère ne pas appeler cela une liste. 🙂

InformationsquelleAutor Celeritas | 2016-01-26