将列表截断为给定数量的元素

什么样的方法会截断一个列表(例如,截断到前100个元素) ,而丢弃其他的元素(不会遍历单个元素) ?

109662 次浏览
list.subList(100, list.size()).clear();

或:

list.subList(0, 100);

使用 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));

如果列表短于指定的大小,则可能出现界限 例外。选择所需大小的最小值和列表的当前大小作为结束索引。

最后,注意第二个参数应该比最后一个所需的索引多一个。

正如在其他答案中所建议的那样,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