将矢量转换为列表

如何将矢量转换为列表?

Vector是一个实现List接口的具体类,因此从技术上讲它已经是List 。 你可以这样做:

 List list = new Vector(); 

要么:

 List list = new Vector(); 

(假设一个String of Vector s)。

但是,如果你想将它转换为ArrayList ,这是Java Collections Framework中与`Vector~最接近的List实现,那么就这样做:

 List newList = new ArrayList(vector); 

或者对于通用版本,假设一个String of Vector

 List newList = new ArrayList(vector); 

如果需要将通用Vector类型转换为适当的ArrayList的实用程序方法,可以使用以下命令:

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

在您的代码中,您将使用实用程序方法,如下所示:

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

您还可以使用内置的java.util.Collections.list(Enumeration),如下所示:

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

但就像下面提到的人一样,Vector就是一个列表! 那你为什么要这么做呢? 也许你不希望你使用的某些代码知道它正在使用Vector – 也许它是不恰当的向下转换,你希望消除这种代码气味。 然后你可以使用

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

如果列表应该被修改。 一个袖手旁观的可变包装是:

 public static  List asList(final List vector) { return new AbstractList() { 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); } } }