[Java] संग्रह में सूची को कैसे परिवर्तित करें?


Answers

इस तरह कुछ काम करना चाहिए, एक संग्रह लेता है ArrayList कन्स्ट्रक्टर को बुलाओ :

List theList = new ArrayList(coll);
Question

मैं Apache संग्रह पुस्तकालय से TreeBidiMap का उपयोग कर रहा हूँ। मैं इसे मूल्यों पर सॉर्ट करना चाहता हूं जो doubles

मेरी विधि का उपयोग कर मूल्यों का Collection पुनर्प्राप्त करना है:

Collection coll = themap.values();

जो स्वाभाविक रूप से ठीक काम करता है।

मुख्य प्रश्न: अब मैं जानना चाहता हूं कि मैं सूची में कैसे परिवर्तित / कास्ट कर सकता हूं (सुनिश्चित नहीं है कि कौन सा सही है) ताकि इसे सॉर्ट किया जा सके?

मैं फिर सॉर्ट किए गए List ऑब्जेक्ट पर TreeBidiMap : प्रयास करना TreeBidiMap , जो क्रमशः होना चाहिए और themap.getKey(iterator.next()) का उपयोग करके themap.getKey(iterator.next()) themap ) से उपयुक्त कुंजी प्राप्त करें TreeBidiMap themap doubles की सूची में होगा।




@ कुनिगामी: मुझे लगता है कि आप गुवा की newArrayList विधि के बारे में गलत हो सकते हैं। यह जांच नहीं करता है कि इटेरेबल एक सूची प्रकार है या बस दी गई सूची को वापस लौटाएं। यह हमेशा एक नई सूची बनाता है:

@GwtCompatible(serializable = true)
public static <E> ArrayList<E> newArrayList(Iterable<? extends E> elements) {
  checkNotNull(elements); // for GWT
  // Let ArrayList's sizing logic work, if possible
  return (elements instanceof Collection)
      ? new ArrayList<E>(Collections2.cast(elements))
      : newArrayList(elements.iterator());
}



यहां एक उप-इष्टतम समाधान है जो एक लाइनर के रूप में है:

Collections.list(Collections.enumeration(coll));



Collections.sort( new ArrayList( coll ) );