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

标签 java collections

什么方法会截断列表(例如前 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 返回项目的 View ,因此如果您希望列表的其余部分有资格进行垃圾回收,您应该将您想要的项目复制到新的列表:

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

如果列表短于指定大小,则预期超出范围 exception .选择所需大小的最小值和列表的当前大小作为结束索引。

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

关于java - 将列表截断为给定数量的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1279476/

相关文章:

java - 在字符串之间添加 n-1 个逗号

java - 使用UDP协议(protocol)传输大数据

Java:异步任务

java - Hibernate 多对多级联删除

java - Java 1.8 Collection Api 性能测试结果令人困惑

java - 对集合(例如 HashSet)使用 Java 的 contains(Object) 方法而不实际拥有对象

java - 数据连接上的 FTPSClient 套接字超时

java - Java中的局部变量和实例变量有什么区别?

java - 为什么 Iterator 或 listIterator 的 hasext、hasprevious 等方法不检查 ConcurrentModificationException

Java 按特定顺序放入树形图