From 3658d9f7ca478f8d5c6ff5ffec3637b737ac3e26 Mon Sep 17 00:00:00 2001 From: Looly Date: Sat, 26 Apr 2025 13:38:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E6=B5=81=E6=94=B6=E9=9B=86=E5=99=A8?= =?UTF-8?q?=E6=94=B6=E9=9B=86=E6=96=B9=E5=BC=8F=E4=BB=8E=E5=9B=BA=E5=AE=9A?= =?UTF-8?q?Collection=E6=94=B9=E4=B8=BA=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E6=94=B6=E9=9B=86=E5=99=A8=EF=BC=8C=E5=8F=AF=E4=BB=A5=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=A6=82=E4=BD=95=E6=94=B6=E9=9B=86=E5=85=83?= =?UTF-8?q?=E7=B4=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hutool/core/stream/CollectorUtil.java | 125 +++++++++--------- .../hutool/core/stream/CollectorUtilTest.java | 2 +- 2 files changed, 63 insertions(+), 64 deletions(-) diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/stream/CollectorUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/stream/CollectorUtil.java index 3ddc8912d..be3fdf233 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/stream/CollectorUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/stream/CollectorUtil.java @@ -483,65 +483,64 @@ public class CollectorUtil { * @author Tanglt */ public static Collector, List>> toPairList(final Function lMapper, - final Function rMapper) { + final Function rMapper) { return toPair(lMapper, rMapper, Collectors.toList(), Collectors.toList()); } - /** * 将一个{@code Collection}两个属性分流至两个Collection,并使用Pair收集。 * - * @param lMapper 左属性收集方法 - * @param rMapper 右属性收集方法 - * @param lDownstream 左属性下游操作 - * @param rDownstream 右属性下游操作 - * @param 元素类型 - * @param 左属性类型 - * @param 左属性收集类型 - * @param 左属性收集最终类型 - * @param 左属性类型 - * @param 左属性收集类型 - * @param 左属性收集最终类型 + * @param lMapper 左属性收集方法 + * @param rMapper 右属性收集方法 + * @param lDownstream 左属性下游操作 + * @param rDownstream 右属性下游操作 + * @param 元素类型 + * @param 左属性类型 + * @param 左属性收集类型 + * @param 左属性收集最终类型 + * @param 左属性类型 + * @param 左属性收集类型 + * @param 左属性收集最终类型 * @return {@code Pair} Pair收集的结果 * @author Tanglt */ @SuppressWarnings("unchecked") public static Collector> toPair(final Function lMapper, - final Function rMapper, - final Collector lDownstream, - final Collector rDownstream - ) { + final Function rMapper, + final Collector lDownstream, + final Collector rDownstream + ) { return new SimpleCollector<>( () -> Pair.of(lDownstream.supplier().get(), rDownstream.supplier().get()), (listPair, element) -> { - lDownstream.accumulator().accept(listPair.getLeft(),lMapper.apply(element)); - rDownstream.accumulator().accept(listPair.getRight(),rMapper.apply(element)); + lDownstream.accumulator().accept(listPair.getLeft(), lMapper.apply(element)); + rDownstream.accumulator().accept(listPair.getRight(), rMapper.apply(element)); }, (listPair1, listPair2) -> - Pair.of(lDownstream.combiner().apply(listPair1.getLeft(),listPair2.getLeft()), - rDownstream.combiner().apply(listPair1.getRight(),listPair2.getRight())), + Pair.of(lDownstream.combiner().apply(listPair1.getLeft(), listPair2.getLeft()), + rDownstream.combiner().apply(listPair1.getRight(), listPair2.getRight())), finisherPair -> { - LR finisherLeftValue; + final LR finisherLeftValue; if (lDownstream.characteristics().contains(Collector.Characteristics.IDENTITY_FINISH)) { finisherLeftValue = (LR) finisherPair.getLeft(); - }else { + } else { finisherLeftValue = lDownstream.finisher().apply(finisherPair.getLeft()); } - RR finisherRightValue; + final RR finisherRightValue; if (lDownstream.characteristics().contains(Collector.Characteristics.IDENTITY_FINISH)) { finisherRightValue = (RR) finisherPair.getRight(); - }else { + } else { finisherRightValue = rDownstream.finisher().apply(finisherPair.getRight()); } - return Pair.of(finisherLeftValue,finisherRightValue); + return Pair.of(finisherLeftValue, finisherRightValue); }, CH_NOID); } @@ -562,80 +561,80 @@ public class CollectorUtil { */ public static Collector, List, List>> toTripleList(final Function lMapper, - final Function mMapper, - final Function rMapper) { + final Function mMapper, + final Function rMapper) { return toTriple(lMapper, mMapper, rMapper, Collectors.toList(), Collectors.toList(), Collectors.toList()); } - /** * 将一个{@code Collection}两个属性分流至两个Collection,并使用Pair收集。 * - * @param lMapper 左元素收集方法 - * @param mMapper 中元素收集方法 - * @param rMapper 右元素收集方法 - * @param lDownstream 左元素下游操作 - * @param rDownstream 右元素下游操作 - * @param 元素类型 - * @param 左属性类型 - * @param 左属性收集类型 - * @param 左属性收集最终类型 - * @param 中属性类型 - * @param 中属性收集类型 - * @param 中属性收集最终类型 - * @param 左属性类型 - * @param 左属性收集类型 - * @param 左属性收集最终类型 + * @param lMapper 左元素收集方法 + * @param mMapper 中元素收集方法 + * @param rMapper 右元素收集方法 + * @param lDownstream 左元素下游操作 + * @param mDownstream 中元素下游操作 + * @param rDownstream 右元素下游操作 + * @param 元素类型 + * @param 左属性类型 + * @param 左属性收集类型 + * @param 左属性收集最终类型 + * @param 中属性类型 + * @param 中属性收集类型 + * @param 中属性收集最终类型 + * @param 左属性类型 + * @param 左属性收集类型 + * @param 左属性收集最终类型 * @return {@code Triple} Triple收集的结果 * @author Tanglt */ @SuppressWarnings("unchecked") public static - Collector> toTriple(final Function lMapper, - final Function mMapper, - final Function rMapper, - final Collector lDownstream, - final Collector mDownstream, - final Collector rDownstream + Collector> toTriple(final Function lMapper, + final Function mMapper, + final Function rMapper, + final Collector lDownstream, + final Collector mDownstream, + final Collector rDownstream ) { return new SimpleCollector<>( () -> Triple.of(lDownstream.supplier().get(), mDownstream.supplier().get(), rDownstream.supplier().get()), (listTriple, element) -> { - lDownstream.accumulator().accept(listTriple.getLeft(),lMapper.apply(element)); - mDownstream.accumulator().accept(listTriple.getMiddle(),mMapper.apply(element)); - rDownstream.accumulator().accept(listTriple.getRight(),rMapper.apply(element)); + lDownstream.accumulator().accept(listTriple.getLeft(), lMapper.apply(element)); + mDownstream.accumulator().accept(listTriple.getMiddle(), mMapper.apply(element)); + rDownstream.accumulator().accept(listTriple.getRight(), rMapper.apply(element)); }, (listTriple1, listTriple2) -> - Triple.of(lDownstream.combiner().apply(listTriple1.getLeft(),listTriple2.getLeft()), - mDownstream.combiner().apply(listTriple1.getMiddle(),listTriple2.getMiddle()), - rDownstream.combiner().apply(listTriple1.getRight(),listTriple2.getRight())), + Triple.of(lDownstream.combiner().apply(listTriple1.getLeft(), listTriple2.getLeft()), + mDownstream.combiner().apply(listTriple1.getMiddle(), listTriple2.getMiddle()), + rDownstream.combiner().apply(listTriple1.getRight(), listTriple2.getRight())), finisherTriple -> { - LR finisherLeftValue; + final LR finisherLeftValue; if (lDownstream.characteristics().contains(Collector.Characteristics.IDENTITY_FINISH)) { finisherLeftValue = (LR) finisherTriple.getLeft(); - }else { + } else { finisherLeftValue = lDownstream.finisher().apply(finisherTriple.getLeft()); } - MR finisherMiddleValue; + final MR finisherMiddleValue; if (mDownstream.characteristics().contains(Collector.Characteristics.IDENTITY_FINISH)) { finisherMiddleValue = (MR) finisherTriple.getMiddle(); - }else { + } else { finisherMiddleValue = mDownstream.finisher().apply(finisherTriple.getMiddle()); } - RR finisherRightValue; + final RR finisherRightValue; if (lDownstream.characteristics().contains(Collector.Characteristics.IDENTITY_FINISH)) { finisherRightValue = (RR) finisherTriple.getRight(); - }else { + } else { finisherRightValue = rDownstream.finisher().apply(finisherTriple.getRight()); } - return Triple.of(finisherLeftValue,finisherMiddleValue,finisherRightValue); + return Triple.of(finisherLeftValue, finisherMiddleValue, finisherRightValue); }, CH_NOID); } diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/stream/CollectorUtilTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/stream/CollectorUtilTest.java index a24ceaf81..224af1f95 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/stream/CollectorUtilTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/stream/CollectorUtilTest.java @@ -167,7 +167,7 @@ public class CollectorUtilTest { Assertions.assertEquals(list.size(),tripleList.getMiddle().size()); Assertions.assertEquals(list.size(),tripleList.getRight().size()); - Triple, String> tripleMixed = list.stream() + final Triple, String> tripleMixed = list.stream() .collect(CollectorUtil.toTriple(Triple::getLeft, Triple::getMiddle, Triple::getRight, Collectors.summingInt(s->s), Collectors.toList(), Collectors.joining()));