Comment convertir un vecteur en liste?
Vector
est une classe concrète qui implémente l'interface List
donc techniquement c'est déjà une List
. Tu peux le faire:
List list = new Vector();
ou:
List<String> list = new Vector<String>();
(en supposant un Vector
de String
s).
Si toutefois vous voulez le convertir en ArrayList
, qui est l'implémentation List
la plus proche d'un `Vector ~ dans le Java = Collections Framework alors faites simplement ceci:
List newList = new ArrayList(vector);
ou pour une version générique, en supposant un Vector
de String
s:
List<String> newList = new ArrayList<String>(vector);
Si vous souhaitez une méthode utilitaire qui convertit un type Vector générique en ArrayList approprié, vous pouvez utiliser ce qui suit:
public static <T> ArrayList<T> toList(Vector<T> source) {
return new ArrayList<T>(source);
}
Dans votre code, vous utiliseriez la méthode utilitaire comme suit:
public void myCode() {
List<String> items = toList(someVector);
System.out.println("items => " + items);
}
Vous pouvez également utiliser la Java.util.Collections.list intégrée (énumération) comme suit:
public void myMethod() {
Vector<String> stringVector = new Vector<String>();
List<String> theList = Collections.list(stringVector.elements());
System.out.println("theList => " + theList);
}
Mais comme quelqu'un mentionné ci-dessous, un vecteur est une liste! Alors pourquoi auriez-vous besoin de faire cela? Peut-être que vous ne voulez pas qu'un code que vous utilisez sache qu'il fonctionne avec un vecteur - peut-être qu'il est mal diffusé et que vous souhaitez éliminer cette odeur de code. Vous pourriez alors utiliser
// the method i give my Vector to can't cast it to Vector
methodThatUsesList( Collections.unmodifiableList(theVector) );
si la liste doit être modifiée. Un emballage mutable prêt à l'emploi est:
public static <T> List<T> asList(final List<T> vector) {
return new AbstractList<T>() {
public E get(int index) { return vector.get(index); }
public int size() { return vector.size(); }
public E set(int index, E element) { return vector.set(index, element); }
public void add(int index, E element) { vector.add(index, element); }
public E remove(int index) { return vector.remove(index); }
}
}