How to code Stream.findNth()?(如何编码 Stream.findNth()?)
本文介绍了如何编码 Stream.findNth()?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
类似于Stream.findFirst()
,有没有办法写Stream.findNth()
?
Similar to Stream.findFirst()
, is there a way to write Stream.findNth()
?
我正在通过重写一些遗留代码来练习 Java 8.而且,我想知道如何使用 Stream API 编写以下函数.
I'm practicing Java 8 by rewriting some legacy code. And, I'm wondering how the below function can be written using 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();
这篇关于如何编码 Stream.findNth()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何编码 Stream.findNth()?
基础教程推荐
猜你喜欢
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- 降序排序:Java Map 2022-01-01