Bonjour!
j'ai écrit un bout de code en java qui est sensé récupérer l'objet de la liste qui a la date la plus récente.
Je ne sait pas si mon code est intelligent ou pas (je me suis efforcée qu'il le soit) mais je rencontre un problème d'accès concurrent que je ne comprends pas...
Voici le code :
En fait ma démarche est la suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 List<AutorisationDTO> oldAutoActif;//pour donner le type while (oldAutoActif.size() >= 2){ List<AutorisationDTO> listIntermediaire = oldAutoActif; AutorisationDTO objetAComparer = oldAutoActif.get(0); listIntermediaire.remove(objetAComparer); for (AutorisationDTO objetCourant : listIntermediaire){ //ligne signalant l'erreur acces concurrent if (objetCourant.getDateCreation().after(objetAComparer.getDateCreation())){ oldAutoActif.remove(objetAComparer); break; } else { oldAutoActif.remove(objetCourant); } } } oldAutoDto = oldAutoActif.get(0);
Je prends la liste initiale j'en retire un élément (A).
je crée une deuxième liste qui contient la liste initiale moins cet élément A.
je parcours la deuxième liste en comparant cet élément(A) avec chacun des élément de la liste:
- Si la date de création de l'élément courant de la liste intermédiaire est postérieur à celle de l'élément A je supprime A de la liste principal et je break le parcours de la liste
- Si la date de création de l'élément courant de la liste intermédiaire est antérieure ou égale à la date de création de A, je supprime cet élément courant de la liste principal et je continue le parcours de la liste
Ceci étant fait dans une boucle while, cela se produit tant que la liste principale a au moins 2 elements.
J'affecte, au sortir de la boucle, l'élément restant de la liste comme vainqueur de date de création la plus récente.
Voila voila,
C'est une question qui demande du temps je pense... Aussi j'espère que vous pourrez le prendre et m'aider à revoir cet algorithme.
Ou à comprendre pourquoi l'accès concurrent dans ce code?
Merci!
Partager