Java 如何对Stream.findNth()进行编码?
类似于Java 如何对Stream.findNth()进行编码?,java,java-8,java-stream,Java,Java 8,Java Stream,类似于Stream.findFirst(),是否有方法编写Stream.findNth() 我正在通过重写一些遗留代码来练习Java8。我想知道如何使用流API编写下面的函数 static curPipeNumber = 0; /** skipToEntry() updates 'curPipeNumber' to 'pipeNumber' and returns the first byte position of the word before the ('pipeNumber')-th
Stream.findFirst()
,是否有方法编写Stream.findNth()
我正在通过重写一些遗留代码来练习Java8。我想知道如何使用流API编写下面的函数
static curPipeNumber = 0;
/** skipToEntry() updates 'curPipeNumber' to 'pipeNumber' and returns the first byte position of the word before the ('pipeNumber')-th pipe.
* It does so by reading and ignoring unnecessary bytes from the buffer.
* e.g.,
*/
static int skipToEntry(byte[] buf, int len, int nextByteToBeRead, int pipeNumber) {
if(curPipeNumber == pipeNumber)
return nextByteToBeRead;
for(; nextByteToBeRead < len; nextByteToBeRead++) {
if(buf[nextByteToBeRead] == '|') {
++curPipeNumber;
if(curPipeNumber == pipeNumber) {
return ++nextByteToBeRead;
}
}
}
return nextByteToBeRead;
}
static int skipToEntry(byte[] buf, int len, int nextByteToBeRead, int pipeNumber) {
if(curPipeNumber == pipeNumber)
return nextByteToBeRead;
OptionalInt pipeIndex = IntStream.range(i, len)
.filter(n -> buf[n] == '|')
.findNth(pipeNumber);
curPipeNumber = pipeNumber;
nextByteToBeRead = pipeIndex.getAsInt() + 1;
return nextByteToBeRead;
}
OptionalInt result = stream.skip(n-1).findFirst();