Подтвердить что ты не робот

Преобразовать вектор в список

Как преобразовать вектор в список?

4b9b3361

Ответ 1

Vector - это конкретный класс, который реализует List, так что технически это уже List. Вы можете сделать это:

List list = new Vector();

или

List<String> list = new Vector<String>();

(предполагая Vector of String s).

Если вы хотите преобразовать его в ArrayList, который является ближайшей реализацией List к` Vector ~ в Тогда Java Collections Framework сделает следующее:

List newList = new ArrayList(vector);

или для общей версии, предполагая Vector of String s:

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

Ответ 2

Если вам нужен метод утилиты, который преобразует общий тип Vector в соответствующий ArrayList, вы можете использовать следующее:

public static <T> ArrayList<T> toList(Vector<T> source) {
    return new ArrayList<T>(source);
}

В вашем коде вы должны использовать метод утилиты следующим образом:

public void myCode() {
    List<String> items = toList(someVector);
    System.out.println("items => " + items);
}

Вы также можете использовать встроенный java.util.Collections.list(перечисление) следующим образом:

public void myMethod() {
    Vector<String> stringVector = new Vector<String>();
    List<String> theList = Collections.list(stringVector.elements());
    System.out.println("theList => " + theList);
}

Но, как и кто-то, упомянутый ниже, Vector-List! Так зачем вам это нужно? Возможно, вам не нужен какой-то код, который вы используете, чтобы знать, что он работает с Vector - возможно, он ненадлежащим образом отбрасывается, и вы хотите устранить этот кодовый запах. Затем вы можете использовать

// the method i give my Vector to can't cast it to Vector
methodThatUsesList( Collections.unmodifiableList(theVector) );

если список должен быть изменен. Измененная обертка с наружной оболочкой:

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