当前位置: 首页 > 面试题库 >

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

狄英哲
2023-03-14
问题内容

有什么方法可以将列表截断(例如到前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));

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

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



 类似资料:
  • 我有一个可能超过1000个字符串的列表,但我不知道具体有多少个。 将此拆分为更小的列表而不丢失列表的任何成员的最佳方法是什么? 例如,如果我有一个成员列表,如何最好地将其拆分为3个几乎大小均匀的列表? 我已经看到了通过分区函数拆分列表的方法,但该函数会将列表拆分为给定大小的块,而不是给定数量的组(子列表)。

  • 问题内容: 以下GO程序给出了错误: 程序: 为什么我不能使用in类型? 问题答案: 更换 通过 引用规范: 当表达式或赋值中混合了不同的数字类型时,需要进行转换。例如,即使int32和int在特定体系结构上可能具有相同的大小,它们也不是同一类型。 Go使用静态类型输入,不会自动在数字类型之间转换。原因可能是为了避免某些错误。例如,应该产生什么值和什么类型?结果应该是吗? ? ?在Go中,这不是问

  • 在更改MySql列的数据类型以存储Twilio调用ID(34个字符字符串)后,我尝试使用以下命令手动更改该列中的数据: 但是,我收到一个错误,看到列的数据类型被正确修改而没有意义?

  • 我想要一个类似于scala分组函数的东西。基本上,一次选择两个元素并处理它们。以下是相同的参考: 将列表拆分为具有固定元素数量的多个列表 Lambda确实提供了诸如groupingBy和partitioningBy之类的东西,但它们似乎都没有与Scala中的分组函数相同。任何指示将不胜感激。

  • 问题内容: 现在我正在使用一个列表,并且期望像这样: 我应该改用数组吗? 问题答案: 我想到的第一件事是: 但是,您真的需要对其进行预初始化吗?

  • 以下代码编译确定: 但是嵌套列表不会: 这是为什么?如果我需要这样做,“正确”的方法是什么? 用例是我有一个方法,它返回许多不同集合中的一个,其中元素类型本身是泛型的,每个可能的返回值都有不同的定义类型,其中返回值取决于传入的参数。目前,作为一种解决方法,我将结果分配给一个变量,其中类型是带有通配符的集合类型(即<code>列表