ArrayList et synchronisation

Le
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
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
nicolas.delsaux
Le #645655
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:

Bernard Koninckx
Le #645651
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


Jean Bernard Root
Le #645401

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 :-)


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

Bernard

"Jean Bernard Root" 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 :-)




Publicité
Poster une réponse
Anonyme