2009-12-29 15 views

Antwort

39

Vector ist eine konkrete Klasse, die die List Schnittstelle implementiert, so dass es technisch bereits eine List ist. Sie können dies tun:

List list = new Vector(); 

oder:

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

(ein Vector von String s vorausgesetzt).

Wenn aber Sie es zu einem ArrayList konvertieren mögen, die die am nächsten List Implementierung zu einem `Vector ~ in dem Java Collections Framework ist dann dies nur tun:

List newList = new ArrayList(vector); 

oder für eine generische Version, unter der Annahme, ein Vector von String s:

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

Dies gilt auch für die Umkehrung, z. 'Vector newVector = neuer Vektor (someStringArrayList);' – StockB

2

Wenn Sie eine Dienstprogramm Methode wollen, die einen generischen Vektortyp auf einen geeigneten Arraylist konvertiert, können Sie die folgend verwenden:

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

In Ihrem Code, würden Sie das Dienstprogramm-Methode verwenden, wie folgt:

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

Sie können auch die eingebaute in java.util.Collections.list (Enumeration) wie folgt verwenden:

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

Aber wie jemand unten erwähnt, ein Vektor ist-eine Liste! Warum also musst du das tun? Vielleicht möchten Sie nicht, dass ein Code verwendet wird, um zu wissen, dass er mit einem Vektor arbeitet - vielleicht ist es ein unpassender Down-Casting und Sie möchten diesen Code-Geruch beseitigen. Sie könnten dann

verwenden, wenn die Liste geändert werden soll. Eine veränderbare Hülle ist: