From a9c5c55a1ee458b6d4105978f4b6181197953c3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Kope=C4=87?= Date: Tue, 4 Nov 2025 19:30:42 +0100 Subject: [PATCH 1/3] New feature: .as(U) and .voided() for Value --- vavr/src/main/java/io/vavr/Value.java | 8 ++++++++ .../main/java/io/vavr/collection/TreeSet.java | 5 +++++ .../test/java/io/vavr/AbstractValueTest.java | 19 +++++++++++++++++++ .../java/io/vavr/collection/BitSetTest.java | 7 +++++++ .../java/io/vavr/collection/TreeSetTest.java | 7 +++++++ 5 files changed, 46 insertions(+) diff --git a/vavr/src/main/java/io/vavr/Value.java b/vavr/src/main/java/io/vavr/Value.java index c9d996a451..075bfe9f4c 100644 --- a/vavr/src/main/java/io/vavr/Value.java +++ b/vavr/src/main/java/io/vavr/Value.java @@ -416,6 +416,14 @@ default T getOrNull() { return isEmpty() ? null : get(); } + default Value as(U val) { + return map((ignored) -> val); + } + + default Value voided() { + return map((ignored) -> null); + } + /** * Checks if this {@code Value} is asynchronously (short: async) computed. *

diff --git a/vavr/src/main/java/io/vavr/collection/TreeSet.java b/vavr/src/main/java/io/vavr/collection/TreeSet.java index 0858151330..511950809c 100644 --- a/vavr/src/main/java/io/vavr/collection/TreeSet.java +++ b/vavr/src/main/java/io/vavr/collection/TreeSet.java @@ -1017,6 +1017,11 @@ public SortedSet zipWithIndex(BiFunction voided() { + return map((o1, o2) -> 0, ignored -> null); + } + // -- Object @Override diff --git a/vavr/src/test/java/io/vavr/AbstractValueTest.java b/vavr/src/test/java/io/vavr/AbstractValueTest.java index 8f2ba8caef..ae65d80de1 100644 --- a/vavr/src/test/java/io/vavr/AbstractValueTest.java +++ b/vavr/src/test/java/io/vavr/AbstractValueTest.java @@ -218,6 +218,25 @@ public void shouldReturnValueWhenGetOrNullOfNonEmpty() { assertThat(of(1).getOrNull()).isEqualTo(1); } + // -- as + + @TestTemplate + public void shouldExecuteAsCorrectly() { + assertThat(empty().as(1)).isEqualTo(empty().as(2)); + assertThat(of(2).as(1)).isEqualTo(of(3).as(1)); + assertThat(of(2).as(1)).isEqualTo(of(3).map(ignored -> 1)); + assertThat(of(3).as(2)).isEqualTo(of(1).map(ignored -> 2)); + } + + // -- voided + + @TestTemplate + public void shouldExecuteVoidedCorrectly() { + assertThat(empty().voided()).isEqualTo(empty()); + assertThat(of(1).voided()).isEqualTo(of(1).as(null)); + assertThat(of(1).voided()).isEqualTo(of(1).map(ignored -> null)); + } + // -- forEach @TestTemplate diff --git a/vavr/src/test/java/io/vavr/collection/BitSetTest.java b/vavr/src/test/java/io/vavr/collection/BitSetTest.java index 623c69f94b..8c7c240ddd 100644 --- a/vavr/src/test/java/io/vavr/collection/BitSetTest.java +++ b/vavr/src/test/java/io/vavr/collection/BitSetTest.java @@ -565,6 +565,13 @@ public void shouldReturnTailOfNonEmptyHavingReversedOrder() { // BitSet can't have reverse order } + @Test + @Override + public void shouldExecuteVoidedCorrectly() { + assertThat(empty().voided()).isEqualTo(empty()); + assertThat(of(1).voided()).isEqualTo(of((Integer)null)); + } + // -- classes private static final class Mapper implements Serializable { diff --git a/vavr/src/test/java/io/vavr/collection/TreeSetTest.java b/vavr/src/test/java/io/vavr/collection/TreeSetTest.java index 75550ce33d..2127c0cb38 100644 --- a/vavr/src/test/java/io/vavr/collection/TreeSetTest.java +++ b/vavr/src/test/java/io/vavr/collection/TreeSetTest.java @@ -411,4 +411,11 @@ public void shouldZipAllEmptyAndNonNil() { @Disabled public void shouldZipAllNonEmptyAndNil() { } + + @Test + @Override + public void shouldExecuteVoidedCorrectly() { + assertThat(empty().voided()).isEqualTo(empty()); + assertThat(of(1).map(ignored -> null)).isEqualTo(of(1).voided()); + } } From 1ce4c46be2b30aa8ae9aba7f50975672882355b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Kope=C4=87?= Date: Fri, 7 Nov 2025 21:36:56 +0100 Subject: [PATCH 2/3] New feature: .mapTo(U) and .mapToVoid() for Value --- vavr/src/main/java/io/vavr/Value.java | 18 +++++++++++++++--- .../main/java/io/vavr/collection/TreeSet.java | 2 +- .../test/java/io/vavr/AbstractValueTest.java | 18 +++++++++--------- .../java/io/vavr/collection/BitSetTest.java | 6 +++--- .../java/io/vavr/collection/TreeSetTest.java | 6 +++--- 5 files changed, 31 insertions(+), 19 deletions(-) diff --git a/vavr/src/main/java/io/vavr/Value.java b/vavr/src/main/java/io/vavr/Value.java index 075bfe9f4c..5d6fbda2f3 100644 --- a/vavr/src/main/java/io/vavr/Value.java +++ b/vavr/src/main/java/io/vavr/Value.java @@ -416,11 +416,23 @@ default T getOrNull() { return isEmpty() ? null : get(); } - default Value as(U val) { - return map((ignored) -> val); + /** + * Maps the underlying value to another fixed value. + * + * @param value value to replace the contents with + * @param The new component type + * @return A new value + */ + default Value mapTo(U value) { + return map((ignored) -> value); } - default Value voided() { + /** + * Maps the underlying value to Void + * + * @return A new value of type Void + */ + default Value mapToVoid() { return map((ignored) -> null); } diff --git a/vavr/src/main/java/io/vavr/collection/TreeSet.java b/vavr/src/main/java/io/vavr/collection/TreeSet.java index 511950809c..bcd08ba28f 100644 --- a/vavr/src/main/java/io/vavr/collection/TreeSet.java +++ b/vavr/src/main/java/io/vavr/collection/TreeSet.java @@ -1018,7 +1018,7 @@ public SortedSet zipWithIndex(BiFunction voided() { + public TreeSet mapToVoid() { return map((o1, o2) -> 0, ignored -> null); } diff --git a/vavr/src/test/java/io/vavr/AbstractValueTest.java b/vavr/src/test/java/io/vavr/AbstractValueTest.java index ae65d80de1..d754da84ef 100644 --- a/vavr/src/test/java/io/vavr/AbstractValueTest.java +++ b/vavr/src/test/java/io/vavr/AbstractValueTest.java @@ -221,20 +221,20 @@ public void shouldReturnValueWhenGetOrNullOfNonEmpty() { // -- as @TestTemplate - public void shouldExecuteAsCorrectly() { - assertThat(empty().as(1)).isEqualTo(empty().as(2)); - assertThat(of(2).as(1)).isEqualTo(of(3).as(1)); - assertThat(of(2).as(1)).isEqualTo(of(3).map(ignored -> 1)); - assertThat(of(3).as(2)).isEqualTo(of(1).map(ignored -> 2)); + public void shouldExecuteMapToCorrectly() { + assertThat(empty().mapTo(1)).isEqualTo(empty().mapTo(2)); + assertThat(of(2).mapTo(1)).isEqualTo(of(3).mapTo(1)); + assertThat(of(2).mapTo(1)).isEqualTo(of(3).map(ignored -> 1)); + assertThat(of(3).mapTo(2)).isEqualTo(of(1).map(ignored -> 2)); } // -- voided @TestTemplate - public void shouldExecuteVoidedCorrectly() { - assertThat(empty().voided()).isEqualTo(empty()); - assertThat(of(1).voided()).isEqualTo(of(1).as(null)); - assertThat(of(1).voided()).isEqualTo(of(1).map(ignored -> null)); + public void shouldExecuteMapToVoidCorrectly() { + assertThat(empty().mapToVoid()).isEqualTo(empty()); + assertThat(of(1).mapToVoid()).isEqualTo(of(1).mapTo(null)); + assertThat(of(1).mapToVoid()).isEqualTo(of(1).map(ignored -> null)); } // -- forEach diff --git a/vavr/src/test/java/io/vavr/collection/BitSetTest.java b/vavr/src/test/java/io/vavr/collection/BitSetTest.java index 8c7c240ddd..57e669210c 100644 --- a/vavr/src/test/java/io/vavr/collection/BitSetTest.java +++ b/vavr/src/test/java/io/vavr/collection/BitSetTest.java @@ -567,9 +567,9 @@ public void shouldReturnTailOfNonEmptyHavingReversedOrder() { @Test @Override - public void shouldExecuteVoidedCorrectly() { - assertThat(empty().voided()).isEqualTo(empty()); - assertThat(of(1).voided()).isEqualTo(of((Integer)null)); + public void shouldExecuteMapToVoidCorrectly() { + assertThat(empty().mapToVoid()).isEqualTo(empty()); + assertThat(of(1).mapToVoid()).isEqualTo(of((Integer)null)); } // -- classes diff --git a/vavr/src/test/java/io/vavr/collection/TreeSetTest.java b/vavr/src/test/java/io/vavr/collection/TreeSetTest.java index 2127c0cb38..e57f32d3cc 100644 --- a/vavr/src/test/java/io/vavr/collection/TreeSetTest.java +++ b/vavr/src/test/java/io/vavr/collection/TreeSetTest.java @@ -414,8 +414,8 @@ public void shouldZipAllNonEmptyAndNil() { @Test @Override - public void shouldExecuteVoidedCorrectly() { - assertThat(empty().voided()).isEqualTo(empty()); - assertThat(of(1).map(ignored -> null)).isEqualTo(of(1).voided()); + public void shouldExecuteMapToVoidCorrectly() { + assertThat(empty().mapToVoid()).isEqualTo(empty()); + assertThat(of(1).map(ignored -> null)).isEqualTo(of(1).mapToVoid()); } } From 333fc3f0b3db7731849fa53470e20387e6248846 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Kope=C4=87?= Date: Fri, 7 Nov 2025 22:02:31 +0100 Subject: [PATCH 3/3] New feature: .mapTo(U) and .mapToVoid() for Value --- vavr/src/test/java/io/vavr/AbstractValueTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vavr/src/test/java/io/vavr/AbstractValueTest.java b/vavr/src/test/java/io/vavr/AbstractValueTest.java index d754da84ef..8442e593a6 100644 --- a/vavr/src/test/java/io/vavr/AbstractValueTest.java +++ b/vavr/src/test/java/io/vavr/AbstractValueTest.java @@ -218,7 +218,7 @@ public void shouldReturnValueWhenGetOrNullOfNonEmpty() { assertThat(of(1).getOrNull()).isEqualTo(1); } - // -- as + // -- mapTo @TestTemplate public void shouldExecuteMapToCorrectly() { @@ -228,7 +228,7 @@ public void shouldExecuteMapToCorrectly() { assertThat(of(3).mapTo(2)).isEqualTo(of(1).map(ignored -> 2)); } - // -- voided + // -- mapToVoid @TestTemplate public void shouldExecuteMapToVoidCorrectly() {