Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ArrayList et synchronisation

4 réponses
Avatar
Bernard Koninckx
Bonjour à tous,

Dans le cadre du développement d'un compsant TableModel générique, j'utilise
les ArrayList. Comment puis je synchroniser mes ArrayList ? Est-ce que
ArrayList maListe = (ArrayList) Collections.synchronisedList(maListe) n'est
pas équivalent a utilliser un Vector ? Que vaut'il mieux faire ?

Autre question qui n'a rien à voir avec les ArrayList. J'utilise dans mon
développement des fichiers XML de configuration. serait-il possible de
savoir quelle est le <!DOCTYPE> le plus adéquat pour effecter cela ? Vaut il
mieux utiliser un DOCTYPE PUBLIC ou SYSTEM. Je souhaite ne pas être trop lié
au répertoire d'origine de ma DTD. Comment puis je faire ?

Merci à tous pour vos réponses, suggestions, commentaire et remarques.

Bernard

4 réponses

Avatar
nicolas.delsaux
Bernard Koninckx wrote:

Bonjour à tous,

Dans le cadre du développement d'un compsant TableModel générique, j'utilise
les ArrayList. Comment puis je synchroniser mes ArrayList ?


Avec Collections.synchronizedList()

Est-ce que
ArrayList maListe = (ArrayList) Collections.synchronisedList(maListe) n'est
pas équivalent a utilliser un Vector ?


Non : synchronizedList te retourne une List, et non une ArrayList. En
fait, elle te retourne une implémentation de List qui va se baser sur ton
ArrayList initiale, mais qui ne sera pas le même objet, et surtout qui ne
sera pas de la même classe.

Que vaut'il mieux faire ?


Personnellement, à ta place, j'éviterais d'utiliser mes ArrayList en tant
que telles, mais plutôt sous la forme de List. Ca a l'avantage de te
permettre de passer instantanément à la LinkedList sans que tu aies à
modifier tout ton code.

Bernard



--
Posté via http://www.webatou.net/
Usenet dans votre navigateur !
Complaints-To:

Avatar
Bernard Koninckx
Merci déjà pour cette réponse.
Je vais tester tout ça.

Est-ce que
ArrayList maListe = (ArrayList) Collections.synchronisedList(maListe)
n'est


pas équivalent a utilliser un Vector ?


Non : synchronizedList te retourne une List, et non une ArrayList.


C'est pour ça que j'ai casté l'objet List retourné avec (ArrayList).

En
fait, elle te retourne une implémentation de List qui va se baser sur ton
ArrayList initiale, mais qui ne sera pas le même objet, et surtout qui ne
sera pas de la même classe.


Bernard


Avatar
Jean Bernard Root

Non : synchronizedList te retourne une List, et non une ArrayList.



C'est pour ça que j'ai casté l'objet List retourné avec (ArrayList).



Oui mais non. Qui vous dit que Collections.synchonizedList() fabrique
une ArrayList à partir de votre ArrayList à vous ? Le contrat vous dit
juste qu'on vous renvoie un machin qui implémente l'interface "List".

Vous vous exposez à une bonne ClassCastException dans la tronche, à mon
avis :-)


Avatar
Bernard Koninckx
Exactement, j'ai essayé et je me suis pris une bonne ClassCastException dans
la tronche.

Bernard

"Jean Bernard Root" a écrit dans le message de
news: 408d1a7e$0$503$

Non : synchronizedList te retourne une List, et non une ArrayList.



C'est pour ça que j'ai casté l'objet List retourné avec (ArrayList).



Oui mais non. Qui vous dit que Collections.synchonizedList() fabrique
une ArrayList à partir de votre ArrayList à vous ? Le contrat vous dit
juste qu'on vous renvoie un machin qui implémente l'interface "List".

Vous vous exposez à une bonne ClassCastException dans la tronche, à mon
avis :-)