2009-12-29 24 views
20

एक वेक्टर को सूची में कैसे परिवर्तित करें?वेक्टर को सूची में बदलने के लिए

+8

एक 'वेक्टर' * * एक 'सूची' है, इसे परिवर्तित करने की आवश्यकता नहीं है। आप क्या हासिल करने का प्रयास कर रहे हैं? – skaffman

उत्तर

39

Vector एक ठोस वर्ग है जो List इंटरफ़ेस लागू करता है इसलिए तकनीकी रूप से यह पहले से ही List है। आप ऐसा कर सकते हैं:

List list = new Vector(); 

या:

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

(यह मानते हुए String के Vector रों)।

यदि फिर भी आप इसे एक ArrayList है, जो सबसे करीब List जावा संग्रह फ्रेमवर्क में एक `वेक्टर ~ के कार्यान्वयन के लिए कनवर्ट करना चाहते हैं तो बस ऐसा करते हैं:

List newList = new ArrayList(vector); 

या एक जेनेरिक वर्जन के लिए, यह मानते हुए String के Vector रों:

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

यह भी विपरीत के लिए सच प्रतीत होता है, उदा। 'वेक्टर न्यू वेक्टर = नया वेक्टर (कुछ स्ट्रिंगअरेलेलिस्ट); ' – StockB

2

आप एक उपयोगिता विधि है कि एक उचित 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); 
} 

लेकिन नीचे वर्णित किसी की तरह, एक वेक्टर-एक सूची है! तो आपको ऐसा करने की आवश्यकता क्यों होगी? शायद आप कुछ कोड नहीं चाहते हैं जो आप जानते हैं कि यह एक वेक्टर के साथ काम कर रहा है - शायद यह अनुपयुक्त डाउन-कास्टिंग है और आप इस कोड-गंध को खत्म करना चाहते हैं। इसके बाद आप

// 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); } 
    } 
} 
संबंधित मुद्दे