From 85c25684ee10148f201158fc48614869404be6b9 Mon Sep 17 00:00:00 2001 From: EliaukU <2556450572@qq.com> Date: Sat, 9 Sep 2023 21:53:34 +0800 Subject: [PATCH 1/2] =?UTF-8?q?1=E3=80=81Opp=E6=96=B0=E5=A2=9Efold?= =?UTF-8?q?=E7=89=B9=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/streamquery/stream/core/optional/Opp.java | 10 ++++++++++ .../streamquery/stream/core/optional/OppTest.java | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/stream-core/src/main/java/org/dromara/streamquery/stream/core/optional/Opp.java b/stream-core/src/main/java/org/dromara/streamquery/stream/core/optional/Opp.java index 6b2e935a..af34da4b 100644 --- a/stream-core/src/main/java/org/dromara/streamquery/stream/core/optional/Opp.java +++ b/stream-core/src/main/java/org/dromara/streamquery/stream/core/optional/Opp.java @@ -361,6 +361,16 @@ public class Opp { } } + /** + * 如果包裹里的值存在,则返回该值,如果不存在返回默认的值 + * @param supplier 如果不存在则返回的默认值 + * @param f 存在时执行的操作 + * @return 如果包裹里的值存在,则返回该值,如果不存在返回默认的值 + */ + public U fold(Supplier supplier, Function f) { + return this.map(f).orElseGet(supplier); + } + /** * 如果包裹里元素的值存在,就执行对应的操作,并返回本身 如果不存在,返回一个空的{@code Opp} * diff --git a/stream-core/src/test/java/org/dromara/streamquery/stream/core/optional/OppTest.java b/stream-core/src/test/java/org/dromara/streamquery/stream/core/optional/OppTest.java index cd647972..f6828398 100644 --- a/stream-core/src/test/java/org/dromara/streamquery/stream/core/optional/OppTest.java +++ b/stream-core/src/test/java/org/dromara/streamquery/stream/core/optional/OppTest.java @@ -62,6 +62,13 @@ class OppTest { Assertions.assertTrue(isEmpty); } + @Test + void foldTest() { + final Opp opp = Opp.ofStr(" "); + final String fold = opp.fold(() -> "hutool", String::toUpperCase); + Assertions.assertEquals("hutool", fold); + } + @Test void peekTest() { final User user = new User(); -- Gitee From 454f6599a62b8102f8a40a961b7cc52330da75de Mon Sep 17 00:00:00 2001 From: EliaukU <2556450572@qq.com> Date: Thu, 5 Oct 2023 11:30:29 +0800 Subject: [PATCH 2/2] =?UTF-8?q?1=E3=80=81=E8=B0=83=E6=8D=A2=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E4=BD=8D=E7=BD=AE=EF=BC=8C=E9=80=82=E5=BA=94=E5=A4=9A?= =?UTF-8?q?=E6=95=B0=E4=BA=BALambda=E8=A1=A8=E8=BE=BE=E5=BC=8F=E7=9A=84?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E4=B9=A0=E6=83=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/streamquery/stream/core/optional/Opp.java | 4 ++-- .../org/dromara/streamquery/stream/core/optional/OppTest.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/stream-core/src/main/java/org/dromara/streamquery/stream/core/optional/Opp.java b/stream-core/src/main/java/org/dromara/streamquery/stream/core/optional/Opp.java index af34da4b..97789a9d 100644 --- a/stream-core/src/main/java/org/dromara/streamquery/stream/core/optional/Opp.java +++ b/stream-core/src/main/java/org/dromara/streamquery/stream/core/optional/Opp.java @@ -363,11 +363,11 @@ public class Opp { /** * 如果包裹里的值存在,则返回该值,如果不存在返回默认的值 - * @param supplier 如果不存在则返回的默认值 * @param f 存在时执行的操作 + * @param supplier 如果不存在则返回的默认值 * @return 如果包裹里的值存在,则返回该值,如果不存在返回默认的值 */ - public U fold(Supplier supplier, Function f) { + public U fold( Function f, Supplier supplier) { return this.map(f).orElseGet(supplier); } diff --git a/stream-core/src/test/java/org/dromara/streamquery/stream/core/optional/OppTest.java b/stream-core/src/test/java/org/dromara/streamquery/stream/core/optional/OppTest.java index f6828398..8c91c481 100644 --- a/stream-core/src/test/java/org/dromara/streamquery/stream/core/optional/OppTest.java +++ b/stream-core/src/test/java/org/dromara/streamquery/stream/core/optional/OppTest.java @@ -65,7 +65,7 @@ class OppTest { @Test void foldTest() { final Opp opp = Opp.ofStr(" "); - final String fold = opp.fold(() -> "hutool", String::toUpperCase); + final String fold = opp.fold(String::toUpperCase, () -> "hutool"); Assertions.assertEquals("hutool", fold); } -- Gitee