Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将列表截断为给定数量的元素_Java_Collections - Fatal编程技术网

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

Java 将列表截断为给定数量的元素,java,collections,Java,Collections,哪种方法会截断一个列表(例如前100个元素)而丢弃其他元素(不遍历单个元素) 或: 使用: 如果列表短于指定的大小,则超出范围。选择所需大小的最小值和列表的当前大小作为结束索引 最后,请注意,第二个参数应该比最后一个所需的索引多出一个。子列表,正如其他答案中所建议的,是第一个想到的参数。我还建议采取一种新的做法 虽然问题并不十分清楚,但听起来山姆确实希望删除列表末尾的内容。因此,您的答案应该包括一个list.clear()。它的性能不太可能像karim79的解决方案那样好,karim79的解决方

哪种方法会截断一个列表(例如前100个元素)而丢弃其他元素(不遍历单个元素)

或:

使用:

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


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

子列表
,正如其他答案中所建议的,是第一个想到的参数。我还建议采取一种新的做法


虽然问题并不十分清楚,但听起来山姆确实希望删除列表末尾的内容。因此,您的答案应该包括一个list.clear()。它的性能不太可能像karim79的解决方案那样好,karim79的解决方案是最好的选择-它有最好的机会表现良好,也是最干净的代码。我认为这取决于要删除的元素的数量(如果列表支持修改),如果Java 8是一个选项,我认为
Stream.limit
应该起作用()第一个选项修改列表,而第二个选项不修改。它应该是
list=list.subList(01100)
还要注意
subList(100,list.size()).clear()
只有在list实现了它的clear方法时才会起作用,例如,如果您通过
list list list=Arrays.asList(someString.split(“,”)创建
list
clear()将抛出
UnsupportedOperationException
,因为
list
将是一个抽象的
list
你必须创建一个对象来缩短list@DavidBradley没错,但HotSpot实际上可能会对此进行优化
list.subList(100, list.size()).clear();
list.subList(0, 100);
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 );
  }
}
List<String> subItems = new ArrayList<String>(items.subList(0, 2));
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