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

2022-08-31 08:15:45

什么方法截断列表(例如,截断到前 100 个元素)丢弃其他元素(不循环访问单个元素)?


答案 1

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

您应该记住,它返回项目的视图,因此,如果您希望列表的其余部分符合垃圾回收的条件,则应将所需的项目复制到新的:subListList

List<String> subItems = new ArrayList<String>(items.subList(0, 2));

如果列表短于指定的大小,则会出现越界异常。选择所需大小的最小值和列表的当前大小作为结束索引。

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


答案 2
list.subList(100, list.size()).clear();

艺术

list.subList(0, 100);