java - 从流中的最后一个跳过
问题描述
有没有办法从处理中排除最后 n 个元素?类似于跳过方法但从最后一个跳过的东西。
解决方案
limit
如果您提前知道长度,您可以使用 来实现。否则,你不能。
int lastToSkip = 5;
someList.stream()
.limit(someList.size() - lastToSkip)
.forEach(System.out::println);
如评论中所述,您试图跳过文件的最后 N 行。但是如果你不知道总共有多少行,你怎么知道最后 N 行是哪几行呢?
一些潜在的解决方案:
使用 a
filter
使拖车线免除。也许预告片的线条遵循其他线条没有的某种模式,并且您可以应用谓词来识别它们,无论有多少。执行文件的第一遍以仅计算行数。在第二遍中进行处理。需要读取整个文件两次。
使用回溯方法。也将您的处理应用到拖车行,在您完成所有行之后,然后应用逆运算以有效地“撤消”已处理拖车行的影响。根据您的处理所涉及的内容,可能无法实现。
推荐阅读
- r - 将函数视为数据(如将函数与数据集捆绑) - 最佳方法
- android - Gradle 同步失败:无法 HEAD 'jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/...'。从服务器收到状态码 403:Forbidden
- python - 有没有办法用python从3d模型二进制文件中提取子模型
- r - 仅为变量的特定值创建直方图
- android - 警报不会从设备存储中响起 android?
- javascript - 如何在一个 jQuery 中分别获取两条路线详细信息?
- c++ - 如果变量值存储在 LIFO 结构中,堆栈如何保存它们?
- javascript - 仅在网格中添加行时启用单元格编辑
- javascript - 有什么方法可以更改应用程序脚本的用户代理?
- android - 从设备中删除已注册的(一个)指纹后,加密的应用程序特定数据会发生什么情况?