From b3a5af07c0c69bd35f4754bbb3b0f86fe64f2169 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Sun, 11 Jun 2023 13:09:16 +0530 Subject: [PATCH] JAVA-8924 Cleanup for spliterator article (#14221) --- .../com/baeldung/spliterator/Executor.java | 7 --- .../java/com/baeldung/spliterator/Task.java | 27 ----------- .../spliterator/ExecutorUnitTest.java | 47 +++++++++---------- 3 files changed, 21 insertions(+), 60 deletions(-) delete mode 100644 core-java-modules/core-java-8/src/main/java/com/baeldung/spliterator/Task.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/spliterator/Executor.java b/core-java-modules/core-java-8/src/main/java/com/baeldung/spliterator/Executor.java index 225925dd9b..3dc2fa06bb 100644 --- a/core-java-modules/core-java-8/src/main/java/com/baeldung/spliterator/Executor.java +++ b/core-java-modules/core-java-8/src/main/java/com/baeldung/spliterator/Executor.java @@ -1,7 +1,5 @@ package com.baeldung.spliterator; -import java.util.List; -import java.util.stream.Collectors; import java.util.stream.Stream; public class Executor { @@ -11,9 +9,4 @@ public class Executor { RelatedAuthorCounter::accumulate, RelatedAuthorCounter::combine); return wordCounter.getCounter(); } - - public static List
generateElements() { - return Stream.generate(() -> new Article("Java")).limit(35000).collect(Collectors.toList()); - } - } \ No newline at end of file diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/spliterator/Task.java b/core-java-modules/core-java-8/src/main/java/com/baeldung/spliterator/Task.java deleted file mode 100644 index 74dc467edd..0000000000 --- a/core-java-modules/core-java-8/src/main/java/com/baeldung/spliterator/Task.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.baeldung.spliterator; - -import java.util.Spliterator; -import java.util.concurrent.Callable; - -public class Task implements Callable { - private Spliterator
spliterator; - private final static String SUFFIX = "- published by Baeldung"; - - public Task(Spliterator
spliterator) { - this.spliterator = spliterator; - } - - @Override - public String call() { - int current = 0; - while (spliterator.tryAdvance(article -> { - article.setName(article.getName() - .concat(SUFFIX)); - })) { - current++; - } - ; - return Thread.currentThread() - .getName() + ":" + current; - } -} diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/spliterator/ExecutorUnitTest.java b/core-java-modules/core-java-8/src/test/java/com/baeldung/spliterator/ExecutorUnitTest.java index 0f5b47ffb0..4628f95481 100644 --- a/core-java-modules/core-java-8/src/test/java/com/baeldung/spliterator/ExecutorUnitTest.java +++ b/core-java-modules/core-java-8/src/test/java/com/baeldung/spliterator/ExecutorUnitTest.java @@ -1,5 +1,7 @@ package com.baeldung.spliterator; +import static org.assertj.core.api.Assertions.assertThat; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -8,33 +10,23 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import java.util.stream.StreamSupport; -import static org.assertj.core.api.Assertions.*; import org.junit.Before; import org.junit.Test; -import com.baeldung.spliterator.Article; -import com.baeldung.spliterator.Author; -import com.baeldung.spliterator.Executor; -import com.baeldung.spliterator.RelatedAuthorSpliterator; -import com.baeldung.spliterator.Task; +import lombok.extern.slf4j.Slf4j; +@Slf4j public class ExecutorUnitTest { Article article; Stream stream; Spliterator spliterator; - Spliterator
split1; - Spliterator
split2; @Before public void init() { article = new Article(Arrays.asList(new Author("Ahmad", 0), new Author("Eugen", 0), new Author("Alice", 1), new Author("Alice", 1), new Author("Mike", 0), new Author("Alice", 1), new Author("Mike", 0), new Author("Alice", 1), new Author("Mike", 0), new Author("Alice", 1), new Author("Mike", 0), new Author("Mike", 0), new Author("Alice", 1), new Author("Mike", 0), new Author("Alice", 1), new Author("Mike", 0), new Author("Alice", 1), new Author("Mike", 0), new Author("Alice", 1), new Author("Mike", 0), new Author("MichaƂ", 0), new Author("Loredana", 1)), 0); - stream = article.getListOfAuthors() - .stream(); - split1 = Executor.generateElements() - .spliterator(); - split2 = split1.trySplit(); + spliterator = new RelatedAuthorSpliterator(article.getListOfAuthors()); } @@ -45,36 +37,39 @@ public class ExecutorUnitTest { } @Test - public void givenSpliterator_whenAppliedToAListOfArticle_thenSplittedInHalf() { - assertThat(new Task(split1).call()).containsSequence(Executor.generateElements() - .size() / 2 + ""); - assertThat(new Task(split2).call()).containsSequence(Executor.generateElements() - .size() / 2 + ""); - } - - @Test - public void givenAstreamOfArticles_whenProcessedInSequentiallyWithSpliterator_ProducessRightOutput() { + public void givenAStreamOfArticles_whenProcessedSequentiallyWithSpliterator_ProducessRightOutput() { List
articles = Stream.generate(() -> new Article("Java")) .limit(35000) .collect(Collectors.toList()); Spliterator
spliterator = articles.spliterator(); while (spliterator.tryAdvance(article -> article.setName(article.getName() - .concat("- published by Baeldung")))); + .concat("- published by Baeldung")))) + ; articles.forEach(article -> assertThat(article.getName()).isEqualTo("Java- published by Baeldung")); } @Test - public void givenSpliterator_whenAppliedToListOfArticles_thenSplitIntoEqualHalf() { + public void givenAStreamOfArticle_whenProcessedUsingTrySplit_thenSplitIntoEqualHalf() { + List
articles = Stream.generate(() -> new Article("Java")) + .limit(35000) + .collect(Collectors.toList()); + + Spliterator
split1 = articles.spliterator(); + Spliterator
split2 = split1.trySplit(); + + log.info("Size: " + split1.estimateSize()); + log.info("Characteristics: " + split1.characteristics()); + List
articlesListOne = new ArrayList<>(); List
articlesListTwo = new ArrayList<>(); split1.forEachRemaining(articlesListOne::add); split2.forEachRemaining(articlesListTwo::add); - System.out.println(articlesListOne.size()); - System.out.println(articlesListTwo.size()); + assertThat(articlesListOne.size()).isEqualTo(17500); + assertThat(articlesListTwo.size()).isEqualTo(17500); assertThat(articlesListOne).doesNotContainAnyElementsOf(articlesListTwo); }