11得票5回答
Java8-Optional的do-while循环

我经常在我的一些项目中使用do-while-checkNextForNull-getNext的循环模式(不知道是否有官方名称)。但是在Java8中,使用Optional被视为优于在客户端代码中检查null引用的更清晰的代码。但是当在这种循环模式中使用Optional时,代码变得有点冗长和丑陋,...

22得票5回答
Java 8中的函数式接口在Java 7中如何实现?

Java 8的函数式接口是否可以在某个地方(例如一个JAR包)获取,以便我可以在Java 7项目中使用它们?这样,我稍后就可以更容易地将代码移植到习惯用法的Java 8中。如果没有,那么从技术上讲是否可能,或者它们是否使用了像默认方法这样的新功能?是的,我指的是java.util.functi...

16得票2回答
当使用Lambda表达式时,Maven插件构建失败

我编写了一个Maven插件/操作,用于生成一些代码。这个插件很好用,并且是基于Java JDK 1.8构建的。 但是我看到了一些奇怪的行为:如果我使用pre-1.8语法,它能够正常构建、安装等,但是一旦我使用了Java 8 Lambda表达式,在执行mvn clean install时就会出...

17得票7回答
如何使用流将元素映射到它们的索引?

我收到了一系列自定义对象的流,我想要创建一个地图Map&lt;Integer, MyObject&gt;,其中每个对象的索引作为键。给你一个简单的例子: Map map = new HashMap<>(); for (MyObject obj : myObjects) { map.put...

25得票2回答
如何创建一个通用的分页Spliterator?

我希望能够处理从必须按页面访问的源读取的Java流。首先,我实现了一个分页迭代器,当当前页面用完项目时,简单地请求页面,然后使用StreamSupport.stream(iterator, false)获取迭代器上的流句柄。 由于我的页面获取成本很高,因此我想通过并行流方式访问页面。在这一点...

10得票5回答
如何使用Java Streams在集合中找到BigDecimal字段的最小值?

我想使用Java流来迭代一个列表并找到BigDecimal的最低价格。以下代码可以说明,但无法正常运行(因为min()无法接受BigDecimal): class Product { public BigDecimal price; } List&lt;Product&gt; pr...

17得票2回答
在Stream中,“filter then map”和“map then filter”的性能有差异吗?

我想知道哪种方式更快:通过字段过滤自定义对象再按其字段映射,还是反之(先映射再过滤) 最终,我通常希望将映射的字段收集到某个集合中。 例如,最简单的Person类:public class Person { String uuid; String name; Stri...

11得票2回答
使用Java Stream来计算一个项目列表中日期出现的次数

我有一个项目列表,其中包含一个(java.util.)Date属性,我想为从最旧日期到现在的每一天创建一个DataSeriesItem。这是一个带时间线的图表系列。 创建DataSeriesItem的代码如下: DataSeriesItem seriesItem = new DataSeri...

11得票2回答
使用OpenJDK 8和Apple M1芯片在Docker shell中进行sbt编译时出现SIGSEGV错误。

我刚拿到一台搭载 Apple M1 芯片的 Mac,并正在尝试为我正在开发的项目设置开发环境。我正在使用 Docker Desktop,并将平台标志添加到了 docker-compose.yml (platform: linux/x86_64) 和 Dockerfile (FROM --pla...

8得票1回答
Java 8中的覆盖率报告

我刚开始接触Java 8,发现很多使用流和可选对象的情况。于是就有了一个问题。考虑以下来自Oracle教程的示例: String name = computer.flatMap(Computer::getSoundcard) .flatMa...