From ac32eebb539447741c6e80d8dc6473abac2e551d Mon Sep 17 00:00:00 2001
From: Jagath Kumar <1611881-jagathks@users.noreply.gitlab.com>
Date: Mon, 8 Apr 2024 17:03:26 +0530
Subject: [PATCH] calculating Moving averages - review fixes
---
.../algorithms-miscellaneous-9}/pom.xml | 17 ++++-----
.../baeldung/ExponentialMovingAverage.java | 0
.../MovingAverageByCircularBuffer.java | 0
.../MovingAverageWithApacheCommonsMath.java | 0
.../MovingAverageWithStreamBasedApproach.java | 18 +++++++++
.../ExponentialMovingAverageUnitTest.java | 3 +-
...MovingAverageByCircularBufferUnitTest.java | 1 -
...gAverageWithApacheCommonsMathUnitTest.java | 1 -
...verageWithStreamBasedApproachUnitTest.java | 38 +++++++++++++++++++
algorithms-modules/pom.xml | 1 +
core-java-modules/pom.xml | 1 -
11 files changed, 66 insertions(+), 14 deletions(-)
rename {core-java-modules/core-java-calculating-moving-averages => algorithms-modules/algorithms-miscellaneous-9}/pom.xml (61%)
rename {core-java-modules/core-java-calculating-moving-averages => algorithms-modules/algorithms-miscellaneous-9}/src/main/java/com/baeldung/ExponentialMovingAverage.java (100%)
rename {core-java-modules/core-java-calculating-moving-averages => algorithms-modules/algorithms-miscellaneous-9}/src/main/java/com/baeldung/MovingAverageByCircularBuffer.java (100%)
rename {core-java-modules/core-java-calculating-moving-averages => algorithms-modules/algorithms-miscellaneous-9}/src/main/java/com/baeldung/MovingAverageWithApacheCommonsMath.java (100%)
create mode 100644 algorithms-modules/algorithms-miscellaneous-9/src/main/java/com/baeldung/MovingAverageWithStreamBasedApproach.java
rename {core-java-modules/core-java-calculating-moving-averages => algorithms-modules/algorithms-miscellaneous-9}/src/test/java/com/baeldung/ExponentialMovingAverageUnitTest.java (99%)
rename {core-java-modules/core-java-calculating-moving-averages => algorithms-modules/algorithms-miscellaneous-9}/src/test/java/com/baeldung/MovingAverageByCircularBufferUnitTest.java (99%)
rename {core-java-modules/core-java-calculating-moving-averages => algorithms-modules/algorithms-miscellaneous-9}/src/test/java/com/baeldung/MovingAverageWithApacheCommonsMathUnitTest.java (99%)
create mode 100644 algorithms-modules/algorithms-miscellaneous-9/src/test/java/com/baeldung/MovingAverageWithStreamBasedApproachUnitTest.java
diff --git a/core-java-modules/core-java-calculating-moving-averages/pom.xml b/algorithms-modules/algorithms-miscellaneous-9/pom.xml
similarity index 61%
rename from core-java-modules/core-java-calculating-moving-averages/pom.xml
rename to algorithms-modules/algorithms-miscellaneous-9/pom.xml
index 33de5a2546..cd44b17184 100644
--- a/core-java-modules/core-java-calculating-moving-averages/pom.xml
+++ b/algorithms-modules/algorithms-miscellaneous-9/pom.xml
@@ -3,19 +3,18 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
-
- core-java-calculating-moving-averages
- core-java-calculating-moving-averages
- war
-
- com.baeldung.core-java-modules
- core-java-modules
- 0.0.1-SNAPSHOT
+ com.baeldung
+ algorithms-modules
+ 1.0.0-SNAPSHOT
+ algorithms-miscellaneous-9
+
- 3.6.1
+ 17
+ 17
+ UTF-8
diff --git a/core-java-modules/core-java-calculating-moving-averages/src/main/java/com/baeldung/ExponentialMovingAverage.java b/algorithms-modules/algorithms-miscellaneous-9/src/main/java/com/baeldung/ExponentialMovingAverage.java
similarity index 100%
rename from core-java-modules/core-java-calculating-moving-averages/src/main/java/com/baeldung/ExponentialMovingAverage.java
rename to algorithms-modules/algorithms-miscellaneous-9/src/main/java/com/baeldung/ExponentialMovingAverage.java
diff --git a/core-java-modules/core-java-calculating-moving-averages/src/main/java/com/baeldung/MovingAverageByCircularBuffer.java b/algorithms-modules/algorithms-miscellaneous-9/src/main/java/com/baeldung/MovingAverageByCircularBuffer.java
similarity index 100%
rename from core-java-modules/core-java-calculating-moving-averages/src/main/java/com/baeldung/MovingAverageByCircularBuffer.java
rename to algorithms-modules/algorithms-miscellaneous-9/src/main/java/com/baeldung/MovingAverageByCircularBuffer.java
diff --git a/core-java-modules/core-java-calculating-moving-averages/src/main/java/com/baeldung/MovingAverageWithApacheCommonsMath.java b/algorithms-modules/algorithms-miscellaneous-9/src/main/java/com/baeldung/MovingAverageWithApacheCommonsMath.java
similarity index 100%
rename from core-java-modules/core-java-calculating-moving-averages/src/main/java/com/baeldung/MovingAverageWithApacheCommonsMath.java
rename to algorithms-modules/algorithms-miscellaneous-9/src/main/java/com/baeldung/MovingAverageWithApacheCommonsMath.java
diff --git a/algorithms-modules/algorithms-miscellaneous-9/src/main/java/com/baeldung/MovingAverageWithStreamBasedApproach.java b/algorithms-modules/algorithms-miscellaneous-9/src/main/java/com/baeldung/MovingAverageWithStreamBasedApproach.java
new file mode 100644
index 0000000000..d89e3d9284
--- /dev/null
+++ b/algorithms-modules/algorithms-miscellaneous-9/src/main/java/com/baeldung/MovingAverageWithStreamBasedApproach.java
@@ -0,0 +1,18 @@
+package com.baeldung;
+
+import java.util.stream.DoubleStream;
+
+public class MovingAverageWithStreamBasedApproach {
+ private int windowSize;
+
+ public MovingAverageWithStreamBasedApproach(int windowSize) {
+ this.windowSize = windowSize;
+ }
+ public double calculateAverage(double[] data) {
+ return DoubleStream.of(data)
+ .skip(Math.max(0, data.length - windowSize))
+ .limit(Math.min(data.length, windowSize))
+ .summaryStatistics()
+ .getAverage();
+ }
+}
diff --git a/core-java-modules/core-java-calculating-moving-averages/src/test/java/com/baeldung/ExponentialMovingAverageUnitTest.java b/algorithms-modules/algorithms-miscellaneous-9/src/test/java/com/baeldung/ExponentialMovingAverageUnitTest.java
similarity index 99%
rename from core-java-modules/core-java-calculating-moving-averages/src/test/java/com/baeldung/ExponentialMovingAverageUnitTest.java
rename to algorithms-modules/algorithms-miscellaneous-9/src/test/java/com/baeldung/ExponentialMovingAverageUnitTest.java
index 9db186662d..26251095a8 100644
--- a/core-java-modules/core-java-calculating-moving-averages/src/test/java/com/baeldung/ExponentialMovingAverageUnitTest.java
+++ b/algorithms-modules/algorithms-miscellaneous-9/src/test/java/com/baeldung/ExponentialMovingAverageUnitTest.java
@@ -1,8 +1,7 @@
package com.baeldung;
-import org.junit.Test;
-
import static org.junit.Assert.assertEquals;
+import org.junit.Test;
public class ExponentialMovingAverageUnitTest {
diff --git a/core-java-modules/core-java-calculating-moving-averages/src/test/java/com/baeldung/MovingAverageByCircularBufferUnitTest.java b/algorithms-modules/algorithms-miscellaneous-9/src/test/java/com/baeldung/MovingAverageByCircularBufferUnitTest.java
similarity index 99%
rename from core-java-modules/core-java-calculating-moving-averages/src/test/java/com/baeldung/MovingAverageByCircularBufferUnitTest.java
rename to algorithms-modules/algorithms-miscellaneous-9/src/test/java/com/baeldung/MovingAverageByCircularBufferUnitTest.java
index 2e213adbbb..4f641739b1 100644
--- a/core-java-modules/core-java-calculating-moving-averages/src/test/java/com/baeldung/MovingAverageByCircularBufferUnitTest.java
+++ b/algorithms-modules/algorithms-miscellaneous-9/src/test/java/com/baeldung/MovingAverageByCircularBufferUnitTest.java
@@ -1,7 +1,6 @@
package com.baeldung;
import org.junit.Test;
-
import static org.junit.Assert.assertEquals;
public class MovingAverageByCircularBufferUnitTest {
diff --git a/core-java-modules/core-java-calculating-moving-averages/src/test/java/com/baeldung/MovingAverageWithApacheCommonsMathUnitTest.java b/algorithms-modules/algorithms-miscellaneous-9/src/test/java/com/baeldung/MovingAverageWithApacheCommonsMathUnitTest.java
similarity index 99%
rename from core-java-modules/core-java-calculating-moving-averages/src/test/java/com/baeldung/MovingAverageWithApacheCommonsMathUnitTest.java
rename to algorithms-modules/algorithms-miscellaneous-9/src/test/java/com/baeldung/MovingAverageWithApacheCommonsMathUnitTest.java
index d2212a59d2..fff884ec01 100644
--- a/core-java-modules/core-java-calculating-moving-averages/src/test/java/com/baeldung/MovingAverageWithApacheCommonsMathUnitTest.java
+++ b/algorithms-modules/algorithms-miscellaneous-9/src/test/java/com/baeldung/MovingAverageWithApacheCommonsMathUnitTest.java
@@ -1,7 +1,6 @@
package com.baeldung;
import org.junit.Test;
-
import static org.junit.Assert.assertEquals;
public class MovingAverageWithApacheCommonsMathUnitTest {
diff --git a/algorithms-modules/algorithms-miscellaneous-9/src/test/java/com/baeldung/MovingAverageWithStreamBasedApproachUnitTest.java b/algorithms-modules/algorithms-miscellaneous-9/src/test/java/com/baeldung/MovingAverageWithStreamBasedApproachUnitTest.java
new file mode 100644
index 0000000000..bf8775e51a
--- /dev/null
+++ b/algorithms-modules/algorithms-miscellaneous-9/src/test/java/com/baeldung/MovingAverageWithStreamBasedApproachUnitTest.java
@@ -0,0 +1,38 @@
+package com.baeldung;
+
+import org.junit.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+public class MovingAverageWithStreamBasedApproachUnitTest {
+
+ @Test
+ public void whenEmptyDataIsPassed_shouldReturnZero() {
+ double[] data = {};
+ int windowSize = 3;
+ double expectedAverage = 0;
+ MovingAverageWithStreamBasedApproach calculator = new MovingAverageWithStreamBasedApproach(windowSize);
+ double actualAverage = calculator.calculateAverage(data);
+ assertEquals(expectedAverage, actualAverage);
+ }
+
+ @Test
+ public void whenValidDataIsPassed_shouldReturnCorrectAverage() {
+ double[] data = {10, 20, 30, 40, 50};
+ int windowSize = 3;
+ double expectedAverage = 40;
+ MovingAverageWithStreamBasedApproach calculator = new MovingAverageWithStreamBasedApproach(windowSize);
+ double actualAverage = calculator.calculateAverage(data);
+ assertEquals(expectedAverage, actualAverage);
+ }
+
+ @Test
+ public void whenValidDataIsPassedWithLongerWindowSize_shouldReturnCorrectAverage() {
+ double[] data = {10, 20, 30, 40, 50};
+ int windowSize = 5;
+ double expectedAverage = 30;
+ MovingAverageWithStreamBasedApproach calculator = new MovingAverageWithStreamBasedApproach(windowSize);
+ double actualAverage = calculator.calculateAverage(data);
+ assertEquals(expectedAverage, actualAverage);
+ }
+}
\ No newline at end of file
diff --git a/algorithms-modules/pom.xml b/algorithms-modules/pom.xml
index d3f27f4fa8..aaaac86b6d 100644
--- a/algorithms-modules/pom.xml
+++ b/algorithms-modules/pom.xml
@@ -26,6 +26,7 @@
algorithms-searching
algorithms-sorting
algorithms-sorting-2
+ algorithms-miscellaneous-9
diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml
index 9d5a19104e..00c40151e4 100644
--- a/core-java-modules/pom.xml
+++ b/core-java-modules/pom.xml
@@ -224,7 +224,6 @@
java-rmi
java-spi
java-websocket
- core-java-calculating-moving-averages