Bref pour résumer :
- int et Integer c'est quasiment la même chose, sauf qu'effectivement si tu dois allouer 10 millions de petites cases pour y stocker un entier au lieu de directement manipuler tes 10 millions d'entiers, bah ça commence à se faire sentir. Ça pose rarement problème pas besoin de se limiter sur l'utilisation de Integer pour autant.
- L'important à connaître, c'est tableaux vs listes. Le but des tableaux, c'est que l'opération tab[i] soit instantanée. Alors que sur une liste, faire list.get(i) est la plupart du temps une mauvaise idée : list.get(i) va traverser toute la liste jusqu'à arriver au i-ème élément. Par contre sur une liste tu peux faire un .add de manière instantanée, ce qui n'existe pas sur les tableaux.
- ArrayList est un truc un peu hybride, mais dans le fond ça reste avant tout un tableau. Les méthodes de listes comme "add" y ont été ajoutées, mais sont parfois moins efficaces que sur les vraies listes. La méthode .get(i) est instantanée, comme sur les tableaux. Le add est parfois instantané, et parfois il doit recopier tout le tableau.
- Faire des tests en mesurant le temps que prennent les opérations, c'est rigolo mais rarement pertinent, on va mesurer beaucoup de bruit style optimisations du compilo, des conneries comme int / Integer, etc. Il faut surtout avoir quelques notions d'algo et de complexité. On s'en fout que telle méthode aille 2 fois plus vite que telle autre, tant que c'est juste un facteur constant. Par contre si une méthode est en O(n) et l'autre en O(n²), là ça fait une grosse différence. Les soucis de performances sont presque toujours des problèmes de complexité, à part si tu fais des trucs très bas niveau.
Message édité le 06 janvier 2018 à 20:28:37 par JeanCroutenard