From 5881ab1071d40137396703f0ad29db8403b03a54 Mon Sep 17 00:00:00 2001 From: Tobias Bernhard Date: Tue, 22 Jul 2025 14:23:26 +0200 Subject: [PATCH 1/6] add method keyedByIndex --- src/main/java/com/bakdata/util/seq2/Seq2.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/bakdata/util/seq2/Seq2.java b/src/main/java/com/bakdata/util/seq2/Seq2.java index 80b2b05..8c7689a 100644 --- a/src/main/java/com/bakdata/util/seq2/Seq2.java +++ b/src/main/java/com/bakdata/util/seq2/Seq2.java @@ -1336,6 +1336,10 @@ default PairSeq zipWithIndex() { return PairSeq.seq(this.toSeq().zipWithIndex()); } + default PairSeq keyedByIndex() { + return PairSeq.seq(this.toSeq().zipWithIndex()).swapped(); + } + /** * @see Seq#zipWithIndex() */ From c85327d3e6755c20d3b0aa38bcc9aa52090a66b5 Mon Sep 17 00:00:00 2001 From: Tobias Bernhard Date: Tue, 22 Jul 2025 14:24:21 +0200 Subject: [PATCH 2/6] add tests for keyedByIndex and zipWithIndex --- .../java/com/bakdata/util/seq2/Seq2Test.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/test/java/com/bakdata/util/seq2/Seq2Test.java b/src/test/java/com/bakdata/util/seq2/Seq2Test.java index ea10fce..407e4b7 100644 --- a/src/test/java/com/bakdata/util/seq2/Seq2Test.java +++ b/src/test/java/com/bakdata/util/seq2/Seq2Test.java @@ -92,4 +92,26 @@ void shouldFlatMapToIterablePair() { new Tuple2<>(2, 2), new Tuple2<>(3, 3)); } + @Test + void shouldZipWithIndex() { + assertThat((Stream>) Seq2.seq(List.of(10, 11, 12)) + .zipWithIndex() + ).containsExactlyInAnyOrder( + new Tuple2<>(10, 0L), + new Tuple2<>(11, 1L), + new Tuple2<>(12, 2L) + ); + } + + @Test + void shouldPairWithIndexKey() { + assertThat((Stream>) Seq2.seq(List.of(10, 11, 12)) + .keyedByIndex() + ).containsExactlyInAnyOrder( + new Tuple2<>(0L, 10), + new Tuple2<>(1L, 11), + new Tuple2<>(2L, 12) + ); + } + } From 449eccc8c103ca4582b46c204a735c18da65cea2 Mon Sep 17 00:00:00 2001 From: Tobias Bernhard Date: Tue, 22 Jul 2025 14:25:23 +0200 Subject: [PATCH 3/6] add javadoc --- src/main/java/com/bakdata/util/seq2/Seq2.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/bakdata/util/seq2/Seq2.java b/src/main/java/com/bakdata/util/seq2/Seq2.java index 8c7689a..32d1344 100644 --- a/src/main/java/com/bakdata/util/seq2/Seq2.java +++ b/src/main/java/com/bakdata/util/seq2/Seq2.java @@ -1,5 +1,5 @@ /* - * Copyright (c), 2024 bakdata GmbH + * Copyright (c), 2025 bakdata GmbH * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -1332,10 +1332,22 @@ default PairSeq zip(final Seq2 other) { return this.zip(other.toSeq()); } + /** + * Zips each element of this sequence with its zero-based index. + * + * @return a {@link PairSeq} whose elements are the original elements paired with their respective index (element, + * index) + * @see Seq#zipWithIndex() + */ default PairSeq zipWithIndex() { return PairSeq.seq(this.toSeq().zipWithIndex()); } + /** + * Similar to {@link #zipWithIndex()}, but index is used as {@link PairSeq} key. + * + * @return a {@link PairSeq} whose elements are the index paired with the original element (index, element) + */ default PairSeq keyedByIndex() { return PairSeq.seq(this.toSeq().zipWithIndex()).swapped(); } From 7deae900db01a127c39fdc42b6e28edba3f7e6b7 Mon Sep 17 00:00:00 2001 From: Tobias Bernhard Date: Tue, 22 Jul 2025 14:26:57 +0200 Subject: [PATCH 4/6] fix gradle build missing dependency --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index c3d3b1d..fad6dd2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { `java-library` id("net.researchgate.release") version "3.0.2" id("com.bakdata.sonar") version "1.1.17" - id("com.bakdata.sonatype") version "1.2.1" + id("com.bakdata.sonatype") version "1.6.1" id("org.hildan.github.changelog") version "2.2.0" id("io.freefair.lombok") version "8.4" } From ad97a0ed2e7be745d68364743d7ed5ed86dfa3d2 Mon Sep 17 00:00:00 2001 From: Tobi <26442427+tobbber@users.noreply.github.com> Date: Tue, 22 Jul 2025 14:30:51 +0200 Subject: [PATCH 5/6] Update src/main/java/com/bakdata/util/seq2/Seq2.java Co-authored-by: Philipp Schirmer --- src/main/java/com/bakdata/util/seq2/Seq2.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/bakdata/util/seq2/Seq2.java b/src/main/java/com/bakdata/util/seq2/Seq2.java index 32d1344..9979098 100644 --- a/src/main/java/com/bakdata/util/seq2/Seq2.java +++ b/src/main/java/com/bakdata/util/seq2/Seq2.java @@ -1349,7 +1349,7 @@ default PairSeq zipWithIndex() { * @return a {@link PairSeq} whose elements are the index paired with the original element (index, element) */ default PairSeq keyedByIndex() { - return PairSeq.seq(this.toSeq().zipWithIndex()).swapped(); + return this.zipWithIndex().swapped(); } /** From c7e2ff4e9ffa57f9fce3ae2b040a723a54f33eab Mon Sep 17 00:00:00 2001 From: Tobias Bernhard Date: Tue, 22 Jul 2025 15:13:47 +0200 Subject: [PATCH 6/6] Revert "fix gradle build missing dependency" This reverts commit 7deae900db01a127c39fdc42b6e28edba3f7e6b7. --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index fad6dd2..c3d3b1d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { `java-library` id("net.researchgate.release") version "3.0.2" id("com.bakdata.sonar") version "1.1.17" - id("com.bakdata.sonatype") version "1.6.1" + id("com.bakdata.sonatype") version "1.2.1" id("org.hildan.github.changelog") version "2.2.0" id("io.freefair.lombok") version "8.4" }