जवाबों:
उपयोग करें 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));
यदि सूची निर्दिष्ट आकार से छोटी है, तो सीमा अपवाद से बाहर निकलने की अपेक्षा करें । अंतिम इंडेक्स के रूप में वांछित आकार और सूची के वर्तमान आकार का न्यूनतम मूल्य चुनें।
अंत में, ध्यान दें कि दूसरा तर्क अंतिम वांछित सूचकांक से एक अधिक होना चाहिए।
Stream.limitहै कि ट्रिक ( docs.oracle.com/javase/8/docs/api/java/util/stream/… ) करना चाहिए
list.subList(100, list.size()).clear();
या:
list.subList(0, 100);
list = list.subList(0, 100)
subList(100, list.size()).clear()केवल होगा काम करता है, तो सूची उदाहरण के लिए, अपनी स्पष्ट विधि लागू है अगर तुम बनाने के listद्वारा List<String> list = Arrays.asList(someString.split(","));स्पष्ट () फेंक देते हैं UnsupportedOperationExceptionके बाद से listएक सार हो जाएगा List।
list.subList(n, list.size()).clear();
subList, जैसा कि अन्य उत्तरों में सुझाया गया है, वह पहला है जो दिमाग में आता है। मैं एक स्ट्रीम अप्रोच भी सुझाऊंगा ।
source.stream().limit(10).collect(Collectors.toList()); // truncate to first 10 elements
source.stream().skip(2).limit(5).collect(Collectors.toList()); // discards the first 2 elements and takes the next 5