【发布时间】:2016-01-25 17:48:36
【问题描述】:
在使用 Java 8 Streams 时,我有时会发现 Stream 没有我想要的特定方法(例如 takeWhile()、dropWhile()、skipLast())。如何在不重写整个 Java 8 Stream 架构的情况下创建自己的具有附加方法的流类?
我知道StreamEx 库并且知道它有takeWhile() 和dropWhile()。在撰写本文时,它没有skipLast()。我已经为此方法提交了an issue。
【问题讨论】:
-
你应该创建一个包装类并编写你自己的流框架
-
您可以使用索引创建一个流并使用
filter获取您想要的索引,然后将其映射回实际数据。例如打印除数组中最后一个元素之外的所有内容,IntStream.range(0, array.length).filter(i -> i != array.length-1).mapToObj(i -> array[i]).forEach(System.out::println);。但我认为它不如@LouisWasserman 的建议好。 -
我们在这里只讨论语法糖。不喜欢静态方法,因为它们是流语法的反模式。但是,如果只是为了一种方法,那么包装所有东西的成本是不可接受的
标签: java java-stream streamex