Java foreach efficacité

J'ai quelque chose comme ceci:

Map<String, String> myMap = ...;

for(String key : myMap.keySet()) {
   System.out.println(key);
   System.out.println(myMap.get(key)); 
}

Est donc myMap.keySet() appelé une fois dans le boucle foreach?
Je pense que c'est, mais que vous voulez de votre avis.

Je voudrais savoir si en utilisant foreach de cette façon (myMap.keySet()) a un impact sur les performances ou c'est équivalent à ceci:

Set<String> keySet = myMap.keySet();
for (String key : keySet) {
   ...
}
  • (La syntaxe de renforcement de la boucle for est un peu de l'arrière vers l'avant.)
  • Je ne sais pas si je serais d'accord avec l'appel de cette optimisation prématurée. Il est raisonnable de vouloir comprendre ce que le compilateur est en train de faire avec votre code. Nous avons également aucune idée à quel point, dans son projet (s'il est à même de travailler sur un projet et ne pas poser sur le plan scolaire), il est demander ce. Il pourrait être à la fin.
  • +1 pour la question.