web-dev-qa-db-fra.com

convertir le vecteur en liste

Comment convertir un vecteur en liste?

25
sarah

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 Strings).

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

List<String> newList = new ArrayList<String>(vector);
43
cletus

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); }
    }
}
3
les2