Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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 如何仅从StackFrameStream获取前两个StackFrame?_Java_Lambda_Java 8_Java Stream - Fatal编程技术网

Java 如何仅从StackFrameStream获取前两个StackFrame?

Java 如何仅从StackFrameStream获取前两个StackFrame?,java,lambda,java-8,java-stream,Java,Lambda,Java 8,Java Stream,通过使用StackFrameStream上的walk方法,我有一个StackFrames列表。 但我只需要找到前3个堆栈帧 我路过这里 List<StackFrame> stackFrameList = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE).walk(stackFrameStream -> stackFrameStream.collect(Collec

通过使用
StackFrameStream
上的
walk
方法,我有一个
StackFrames
列表。 但我只需要找到前3个堆栈帧

我路过这里

List<StackFrame> stackFrameList =
                StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE).walk(stackFrameStream -> stackFrameStream.collect(Collectors.toList()));

System.out.println("All frames : \n" + stackFrameList.toString());
for (StackFrame stackFrame : stackFrameList) {
      System.out.println("stackFrame.getDeclaringClass()=>" + stackFrame.getDeclaringClass().toString());
      System.out.println("stackFrame.getLineNumber=>" + stackFrame.getLineNumber());
      System.out.println("stackFrame.getMethodName=>" + stackFrame.getMethodName());
      System.out.println();
}
列表堆栈框架列表=
StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE).walk(stackFrameStream->stackFrameStream.collect(Collectors.toList());
System.out.println(“所有帧:\n”+stackFrameList.toString());
用于(StackFrame StackFrame:stackFrameList){
System.out.println(“stackFrame.getDeclaringClass()=>”+stackFrame.getDeclaringClass().toString());
System.out.println(“stackFrame.getLineNumber=>”+stackFrame.getLineNumber());
System.out.println(“stackFrame.getMethodName=>”+stackFrame.getMethodName());
System.out.println();
}
我不想使用
stackFrameStream.collect(Collectors.toList())
获取整个stackFrames列表


我只需要前3个元素

使用
限制
截断:

 StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE)
        .walk(stackFrameStream -> stackFrameStream.limit(3).collect(Collectors.toList()));

您还可以使用
IntStream
获取有限的对象或特定索引处的对象

静态IntStream范围(int startInclusive、int endExclusive)

以增量步骤1返回从startInclusive(包含)到endInclusive(包含)的顺序IntStream

Listresult=IntStream.range(0,2).mapToObj(i->stackFrameStream.get(i)).collect(Collectors.toList());
List< StackFrame > result = IntStream.range(0, 2).mapToObj(i-> stackFrameStream.get(i)).collect(Collectors.toList());