gpt4 book ai didi

java - 如何编写 Stream.findNth() 代码?

转载 作者:太空宇宙 更新时间:2023-11-04 13:08:54 25 4
gpt4 key购买 nike

Stream.findFirst()类似,有没有办法编写Stream.findNth()

我正在通过重写一些遗留代码来练习 Java 8。而且,我想知道如何使用 Stream 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();

关于java - 如何编写 Stream.findNth() 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34166751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com