From b1e9f263bcc2f9c8ba3861c6c1b84e3d5caf49ef Mon Sep 17 00:00:00 2001 From: huahua Date: Tue, 26 Jul 2022 10:07:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=92=88=E5=AF=B9=20int=20lo?= =?UTF-8?q?ng=20double=E7=B1=BB=E5=9E=8B=E7=9A=84sum=E5=92=8Cavg=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/hutool/core/stream/EasyStream.java | 69 +++++++++++++++++++ .../cn/hutool/core/stream/EasyStreamTest.java | 9 +++ 2 files changed, 78 insertions(+) diff --git a/hutool-core/src/main/java/cn/hutool/core/stream/EasyStream.java b/hutool-core/src/main/java/cn/hutool/core/stream/EasyStream.java index e3659496c..b84fefc03 100644 --- a/hutool-core/src/main/java/cn/hutool/core/stream/EasyStream.java +++ b/hutool-core/src/main/java/cn/hutool/core/stream/EasyStream.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ObjUtil; import java.util.Objects; +import java.util.OptionalDouble; import java.util.Spliterator; import java.util.function.*; import java.util.stream.Stream; @@ -264,6 +265,74 @@ public class EasyStream extends AbstractEnhancedWrappedStream(stream); } + + + + /** + * 计算int类型总和 + * + * @param mapper 映射 + * @return int + */ + public int sum(ToIntFunction mapper) { + return stream.mapToInt(mapper).sum(); + } + + /** + * 计算long类型总和 + * + * @param mapper 映射 + * @return long + */ + public long sum(ToLongFunction mapper) { + return stream.mapToLong(mapper).sum(); + } + + + /** + * 计算double总和 + * + * @param mapper 映射器 + * @return double + */ + public double sum(ToDoubleFunction mapper) { + return stream.mapToDouble(mapper).sum(); + } + + + + /** + * 计算int平均值 + * + * @param mapper 映射器 + * @return {@link Integer} + */ + public OptionalDouble avg(ToIntFunction mapper) { + return stream.mapToInt(mapper).average(); + } + + /** + * 计算double平均值 + * + * @param mapper 映射 + * @return {@link OptionalDouble} + */ + public OptionalDouble avg(ToDoubleFunction mapper) { + return stream.mapToDouble(mapper).average(); + } + + + /** + * 计算double平均值 + * + * @param mapper 映射 + * @return {@link OptionalDouble} + */ + public OptionalDouble avg(ToLongFunction mapper) { + return stream.mapToLong(mapper).average(); + } + + /** * 建造者 * diff --git a/hutool-core/src/test/java/cn/hutool/core/stream/EasyStreamTest.java b/hutool-core/src/test/java/cn/hutool/core/stream/EasyStreamTest.java index 0f50b8337..1818f061f 100644 --- a/hutool-core/src/test/java/cn/hutool/core/stream/EasyStreamTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/stream/EasyStreamTest.java @@ -433,4 +433,13 @@ public class EasyStreamTest { Assert.assertTrue(EasyStream.of(1).isNotEmpty()); } + + @Test + public void testIntSum() { + int sum = EasyStream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).sum(Integer::intValue); + Assert.assertEquals(sum,55); + double doubleSum = EasyStream.of(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.10).sum(Double::doubleValue); + Assert.assertEquals(doubleSum,59.6); + } + }