Bonjour,
Lorsque je fais :
On m'annonce qu'il est abstract .Code:
1
2
3 private java.util.List pragma_once_List; pragma_once_List = new List();
Je voudrais creer une liste dans lequel je pourrais mettre des String.
Comment faire ?
Version imprimable
Bonjour,
Lorsque je fais :
On m'annonce qu'il est abstract .Code:
1
2
3 private java.util.List pragma_once_List; pragma_once_List = new List();
Je voudrais creer une liste dans lequel je pourrais mettre des String.
Comment faire ?
List est une interface donc il est normal que tu ne puisses pas l'instancier.
Tu peux utiliser une ArrayList ou une LinkedList qui implémentent toutes deux l'interface List
si tu regarde la javadoc de list tu trouve les classe qui implémente List.
Citation:
java.util
Interface List<E>
All Superinterfaces:
Collection<E>, Iterable<E>
All Known Implementing Classes:
AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector
Je te conseille ArrayList
Code:private java.util.List pragma_once_List = new ArrayList();
ArrayList est plus efficace en accès direct () mais moins en insertion/suppression.Code:maListe.get(5)
Dans tous les cas, n'utiliser le nom de la classe choisie que dans l'instanciation et surtout pas dans les paramètres formels des méthodes : ne pas écrire
maisCode:public void foo(ArrayList truc) { ... }
C'est le principe d'inversion de dépendance : dépendre de l'abstraction plutôt que de l'implémentation.Code:public void foo(List truc) { ... }
Comme ça, on peut changer les performances du programme simplement en remplaçant
parCode:List maListe = new LinkedList();
Attention, aucune des deux n'est "thread safe" (contrairement à Vector)Code:List maListe = new ArrayList();
Et si tu veux une liste synchronisée, utilise:Citation:
Envoyé par jldeleage
plutôt que Vector...Code:Collections.synchronizedList(new ArrayList());
Si tu ne veux mettre que des String dans la list donne le type :
Ainsi, la liste n'acceptera que des String.Code:List<String> maListe = new ArrayList<String>();
seulement si tu travailles en 1.5, sinon tu ne peux pas ;)Citation:
Envoyé par narmataru