Antworten:
Verwendung 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 );
}
}
Sie sollten berücksichtigen, dass subList
eine Ansicht der Elemente zurückgegeben wird. Wenn Sie also möchten, dass der Rest der Liste für die Speicherbereinigung geeignet ist, sollten Sie die gewünschten Elemente in ein neues kopieren List
:
List<String> subItems = new ArrayList<String>(items.subList(0, 2));
Wenn die Liste kürzer als die angegebene Größe ist, erwarten Sie eine Ausnahme außerhalb der Grenzen . Wählen Sie den Mindestwert der gewünschten Größe und die aktuelle Größe der Liste als Endindex.
Beachten Sie zum Schluss, dass das zweite Argument eins mehr als der zuletzt gewünschte Index sein sollte.
Stream.limit
sollte ich den Trick machen ( docs.oracle.com/javase/8/docs/api/java/util/stream/… )
list.subList(100, list.size()).clear();
oder:
list.subList(0, 100);
list = list.subList(0, 100)
subList(100, list.size()).clear()
nur funktioniert, wenn die Methode clear in list implementiert ist. Wenn Sie beispielsweise list
mit List<String> list = Arrays.asList(someString.split(","));
clear () erstellen , wird dies ausgelöst, UnsupportedOperationException
da list
es sich um eine Zusammenfassung handelt List
.
list.subList(n, list.size()).clear();
subList
, wie in den anderen Antworten vorgeschlagen, ist das erste, was mir in den Sinn kommt. Ich würde auch einen Stream-Ansatz vorschlagen .
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