你的思维模式就不对,map filter 这类不是语法糖, java8还是有函数式编程能力的。
函数式的核心是不变性,这里不是要求取消变量,而是要建立一种等价思维,以求值 > 过程的方式去思考问题。
你的例子,比如要求在map中停下来这就在设计之外,因为map的语意保证了它一定会遍历完所有数据,返回的类型一定一致,而且长度相同。同样贸然抛出rumtime exception也是非常的不优雅。
有几个方案,
使用optional或者either(这个官方不提供,需要自己弄一个)来包装你的返回类型来保证map语义(把错误放到返回值里去,但是类型不变,具体可以百度)
如果你的数据有前后关系,使用fold(reduce)来处理而不是map。
不使用stream而用回for break,编程其实就是编程,关键是解决问题,针对问题来选择最好的方案,有的时候steam方案不如传统的for,fork/join也不如手工sync notify。
另,stream的并行其实没有你想的那么好,滥用了copyonwrite,我自己玩过一阵之后几乎再也不用了。
不过 java8有个completableFuture估计能满足你的要求。