ArrayList meilleur algo parcours + ConcurrentModificationException
Bonjour ,
Je cherche a optimiser mon programme qui sert a configurer de maniere automatique des parametres stockes dans des fichiers INI . L´affichage des parametres se fait dans un tree .
Mes parametres sont regroupes dans des " modules " . Chaque module contient un ArrayList (nomme lConfigurationItem) de "ConfigurationItem" .Lorsque je veux ecrire dans ces parametres je dois parcourir un a un cette Arraylist pour appeler la methode apply() pour chacun d´entre eux :
Code JAVA :
for(ConfigurationItem ci: lConfigurationItem)
if(ci.isActive()) ci.apply();
Comme vous pouvez voir , J´utilise une boucle for toute simple . J´ai fait une recherche et j´ai ete surpris de voir que dans les exemples ; ils utilisaient en general un iterator couples a des next() . Est ce que cette methode est plus efficace en terme de performance pour parcourir l´ArrayList ?
Lors de ce parcours , pour certains parametres ; la methode apply() provoque un ajout de parametres dans le module et l´ArrayList ce qui provoque un ConcurrentModificationException . Suis je oblige de passer par la methode : List list = Collections.synchronizedList(new ArrayList(...));
? Vector c´est synchronise mais depreciee ...
Sinon dans l´APi de ArrayList :
http://java.sun.com/j2se/1.5.0/docs/api/
Il est ecrit qu´utiliser la methode ensureCapacity ameliore les performances . Au maximum le nombre de parametres atteint 30. Ce qui ne fait que 20 cases supplementaires dans l´ArrayList initial . Je ne pense pas que cela soit significatif !! De votre experience, connaissez vous d´autres methodes pour ameliorer significativement les performances avec l´ArrayList ?
Merci beaucoup et bonne journee :bug: