답변:
사용 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