回答:
使用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
はアイテムのビューを返すことを覚えておいてください。したがって、リストの残りの部分をガベージコレクションの対象にしたい場合は、必要なアイテムをnewにコピーする必要がありますList
。
List<String> subItems = new ArrayList<String>(items.subList(0, 2));
リストが指定されたサイズより短い場合は、範囲外の例外が予想されますます。目的のサイズの最小値とリストの現在のサイズを終了インデックスとして選択します。
最後に、2番目の引数は、最後に必要なインデックスよりも1つ多い必要があることに注意してください。
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