在这种情况下,只有奇数行有意义的数据,并且没有唯一标识这些行的字符.我的目的是获得与以下示例相当的东西:
Stream<DomainObject> res = Files.lines(src)
     .filter(line -> isOddLine())
     .map(line -> todomainObject(line))

有没有任何“干净”的做法,没有分享全球国家?

解决方法

一个干净的方法是进一步深入实现一个Spliterator.在这个级别上,您可以通过流元素控制迭代,并且只要下游请求一个项目,只需迭代两个项目:
public class OddLines<T> extends Spliterators.AbstractSpliterator<T>
    implements Consumer<T> {

    public static <T> Stream<T> oddLines(Stream<T> source) {
        return StreamSupport.stream(new OddLines(source.spliterator()),false);
    }
    private static long odd(long l) { return l==Long.MAX_VALUE? l: (l+1)/2; }
    Spliterator<T> originalLines;

    OddLines(Spliterator<T> source) {
        super(odd(source.estimateSize()),source.characteristics());
        originalLines=source;
    }

    @Override
    public boolean tryAdvance(Consumer<? super T> action) {
        if(originalLines==null || !originalLines.tryAdvance(action))
            return false;
        if(!originalLines.tryAdvance(this)) originalLines=null;
        return true;
    }

    @Override
    public void accept(T t) {}
}

那么你可以使用它

Stream<DomainObject> res = OddLines.oddLines(Files.lines(src))
    .map(line -> todomainObject(line));

该解决方案没有副作用,并保留了Stream API的最大优势,就像懒惰的评估.然而,应该清楚的是,它对于无序流处理没有一个有用的语义(请注意在对所有元素执行终端操作时使用forEachOrdered而不是forEach的微妙方面),并且原则上支持并行处理的可能性不大非常有效…

java-8 – 如何跳过从Files.lines获取的Stream的偶数行的更多相关文章

  1. ios – React native error – react-native-xcode.sh:line 45:react-native:command not found命令/ bin/sh失败,退出代码127

    尝试构建任何(新的或旧的)项目时出现此错误.我的节点是版本4.2.1,react-native是版本0.1.7.我看过其他有相同问题的人,所以我已经更新了本机的最新版本,但是我仍然无法通过xcode构建任何项目.解决方法要解决此问题,请使用以下步骤:>使用节点版本v4.2.1>cd进入[你的应用]/node_modules/react-native/packager>$sh./packager.s

  2. xcode – XCTest一个元组

    我正在尝试构建一个单元测试:但是Xcode给了我一个错误:无法使用类型的参数列表调用’XCTAssertEqual’是否有不同的方法来测试元组而不提取其成员并单独测试?解决方法XCTAssertEqual要求传递给它的两个参数是Equatable,您可以从方法签名中看到它们.注意,expression1返回T?,T必须是Equatable:但是Swifttuplesaren’tEquatable,所以你不能将它们与XCTAssertEqual一起使用.元组确实有一个==方法–它们只是不符合协议–所以你可以

  3. swift中方便调试的日志输出

    ///输出日志//////-parametermessage:日志消息///-parameterlogError:错误标记,默认是false,如果是true,发布时仍然会输出///-parameterfile:文件名///-parametermethod:方法名///-parameterline:代码行数funcprintLog{iflogError{print}else{#ifDEBUGprint#endif}}2.当发布的时候,如图讲-DDEBUG删除就可以了

  4. Swift中的打印日志的配置

    Swift中的打印日志的配置

  5. Swift日志打印

    publicfuncBMLog(message:T,file:String=FILE,method:String=FUNCTION,line:Int=LINE){#ifDEBUGprint(“((fileasNsstring).lastPathComponent)[line:(line)],(method):(message)”)#endif}

  6. Swift 下调试小技巧(备忘)iOS

    自定义log你是否经常出现print一大堆不知道那个是哪个?

  7. 将可选类型转换为错误抛出

    作者:EricaSadun,原文链接,原文日期:2016-10-07译者:wiilen;校对:Cee;定稿:CMBSoroushKhanlou曾写道:「很多时候我希望可选类型并不存在,“结果”就只是“结果”」。为延迟计算保留autoclosure。将全局函数放入类型中,使之称为静态成员。嵌套的错误声明。错误应能给你更多提示,而不是只显示一个名字。在声明了多行的复杂构造器之后使用Allman风格。

  8. NSLog有一个Swift替代(@“%s”,__PRETTY_FUNCTION__)

    虽然Swift不支持宏(我想),我仍然想使用一个通用的日志语句,包括被调用的函数的名称。__LINE__–Int–出现它的行号。__COLUMN__–Int–它开始的列号。__FUNCTION__–String–声明的名称。

  9. Swift中的宏?

    Swift目前是否支持宏,或者有未来计划要添加支持吗?在这种情况下,应为“宏”参数添加默认值。Swift2.2及更高版本Swift2.1和更低版本这是fatalError和assert函数做的。除了在另一个答案中已经提到的条件编译,没有其他宏。

  10. android – line drawable下面没有显示textview

    我有一个textview我想在它下面显示一行.我使用drawableBottom属性来执行此操作.这是我的代码这是我的dividerline.xml我没有收到错误.只是当我运行我的应用程序时,textview下面没有显示任何行.有一个误解的drawableBottom属性?

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部