Edit : Pardon je n'ai pas vu que j'étais pas dans Java... Mais enfaite cela m'intéresse également s'il y a une différence avec le C(++) et C#...

Bonsoir,

J'aurais une question qui me taraude depuis un certain temps :

Si j'ai une boucle en java qui s'exécute n fois, avec n de grande taille. J'ai à ma disposition une ArrayList de taille n, et je veux effectuer un traitement sur chaque valeur contenue dans ma liste.

Quel est la méthode la moins gourmande / la plus rapide entre ces deux méthode :

Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
public void traitement(ArrayList<Integer> liste) {
    Integer tmp;
    for (int i = 0; i < liste.size(); i++) {
        tmp = liste.get(i);
        //Traitement sur temp
    }
}

Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
public void traitement(ArrayList<Integer> liste) {
    for (int i = 0; i < liste.size(); i++) {
        Integer tmp = liste.get(i);
        //Traitement sur temp
    }
}

La différence est la déclaration de tmp avant ou pendant la boucle.

Pour ma part j'aurais pensé que la première solution serait la meilleure, mais j'ai vu à beaucoup d'endroit que les gens déclarent leurs variables dans la boucle.

D'où ma question : y a-t-il une différence au final ? Et avec un objet plus complexe ?

Merci !