2009-08-14 9 views

उत्तर

101

उपयोग List.subList:

import java.util.*; 
import static java.lang.Math.min; 

public class T { 
    public static void main(String args[]) { 
    List<String> items = Arrays.asList("1"); 
    List<String> subItems = items.subList(0, min(items.size(), 2)); 

    // Output: [1] 
    System.out.println(subItems); 

    items = Arrays.asList("1", "2", "3"); 
    subItems = items.subList(0, min(items.size(), 2)); 

    // Output: [1, 2] 
    System.out.println(subItems); 
    } 
} 

आप ध्यान में रखना चाहिए कि subList आइटम के एक दृश्य देता है, इसलिए यदि आप करने के लिए सूची के बाकी चाहते कचरा संग्रह के लिए योग्य बनें, आपको उन वस्तुओं की प्रतिलिपि बनाना चाहिए जिन्हें आप एक नए List:

पर कॉपी करना चाहिए
List<String> subItems = new ArrayList<String>(items.subList(0, 2)); 

यदि सूची निर्दिष्ट आकार से कम है, तो exception सीमाओं से बाहर होने की अपेक्षा करें। वांछित आकार के न्यूनतम मूल्य और सूची के वर्तमान आकार को अंतिम सूचकांक के रूप में चुनें।

अंत में, ध्यान दें कि दूसरा तर्क अंतिम वांछित अनुक्रमणिका से एक होना चाहिए।

+1

जबकि सवाल बिल्कुल स्पष्ट नहीं है, यह ध्वनि की तरह लगता है कि सूची का अंत हटा दिया गया है। इसलिए आपके उत्तर में एक सूची शामिल होनी चाहिए। सरल()। –

+0

यह प्रदर्शन करने की संभावना नहीं है साथ ही करीम 7 9 समाधान, जो कि सबसे अच्छा विकल्प है - इसमें अच्छी तरह से प्रदर्शन करने का सबसे अच्छा मौका है और यह भी सबसे साफ कोड है। –

+0

मुझे लगता है कि यह हटाए जाने वाले तत्वों की संख्या पर निर्भर करता है (और यदि सूची संशोधन का समर्थन करती है) –

43
list.subList(100, list.size()).clear(); 

या:

list.subList(0, 100); 
+2

पहला विकल्प सूची को संशोधित करता है जबकि दूसरा नहीं करता है। यह shoud 'सूची = list.subList (0, 100) ' –

+3

यह भी ध्यान दें कि' उपसूची (100, list.size())। स्पष्ट()' केवल तभी काम करेगा जब सूची में इसकी स्पष्ट विधि लागू हो, उदाहरण के लिए यदि आप 'सूची सूची = Arrays.asList (someString.split (",")) द्वारा' सूची 'बनाएं; 'स्पष्ट' '' असमर्थित ऑपरेशन अपवाद 'फेंक देगा क्योंकि' सूची 'एक सारणी' सूची' होगी। – Gyuri

संबंधित मुद्दे