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 4c62590d2..9762b358c 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 @@ -472,132 +472,132 @@ public class CollectorUtil { } /** - * 将一个Collection两个属性分流至两个ArrayList,并使用Pair收集。 + * 将一个{@code Collection}两个属性分流至两个ArrayList,并使用Pair收集。 * - * @param lMapper 左属性收集方法 - * @param rMapper 右属性收集方法 - * @param 元素类型 - * @param 左属性类型 - * @param 右属性类型 - * @return Pair,List> Pair收集的两个List + * @param lMapper 左属性收集方法 + * @param rMapper 右属性收集方法 + * @param 元素类型 + * @param 左属性类型 + * @param 右属性类型 + * @return {@code Pair,List>} Pair收集的两个List * @author Tanglt */ - public static Collector,List>, Pair,List>> toPairList(Function lMapper, - Function rMapper) { - return toPairCollection(lMapper,rMapper,ArrayList::new,ArrayList::new); + public static Collector, List>, Pair, List>> toPairList(final Function lMapper, + final Function rMapper) { + return toPairCollection(lMapper, rMapper, ArrayList::new, ArrayList::new); } /** - * 将一个Collection两个属性分流至两个Collection,并使用Pair收集。需要指定Collection类型 + * 将一个{@code Collection}两个属性分流至两个Collection,并使用Pair收集。需要指定Collection类型 * - * @param lMapper 左属性收集方法 - * @param rMapper 右属性收集方法 - * @param newCollectionL 左属性Collection创建方法 - * @param newCollectionR 右属性Collection创建方法 - * @param 元素类型 - * @param 左属性类型 - * @param 右属性类型 - * @param 左分流Collection类型 - * @param 右分流Collection类型 - * @return Pair,C> Pair收集的两个List + * @param lMapper 左属性收集方法 + * @param rMapper 右属性收集方法 + * @param newCollectionL 左属性Collection创建方法 + * @param newCollectionR 右属性Collection创建方法 + * @param 元素类型 + * @param 左属性类型 + * @param 右属性类型 + * @param 左分流Collection类型 + * @param 右分流Collection类型 + * @return {@code Pair,C>} Pair收集的两个List * @author Tanglt */ - public static ,RC extends Collection> - Collector, Pair> toPairCollection(Function lMapper, - Function rMapper, - Supplier newCollectionL, - Supplier newCollectionR) { + public static , RC extends Collection> + Collector, Pair> toPairCollection(final Function lMapper, + final Function rMapper, + final Supplier newCollectionL, + final Supplier newCollectionR) { return new SimpleCollector<>(() -> Pair.of(newCollectionL.get(), newCollectionR.get()), - (listPair, element) -> { - L lValue = lMapper.apply(element); - if (lValue != null) { - listPair.getLeft().add(lValue); - } - R rValue = rMapper.apply(element); - if (rValue != null) { - listPair.getRight().add(rValue); - } - }, - (listPair1, listPair2) -> { - listPair1.getLeft().addAll(listPair2.getLeft()); - listPair1.getRight().addAll(listPair2.getRight()); - return listPair1; - }, - CH_ID); + (listPair, element) -> { + final L lValue = lMapper.apply(element); + if (lValue != null) { + listPair.getLeft().add(lValue); + } + final R rValue = rMapper.apply(element); + if (rValue != null) { + listPair.getRight().add(rValue); + } + }, + (listPair1, listPair2) -> { + listPair1.getLeft().addAll(listPair2.getLeft()); + listPair1.getRight().addAll(listPair2.getRight()); + return listPair1; + }, + CH_ID); } /** - * 将一个Collection三个属性分流至三个ArrayList,并使用Triple收集。 + * 将一个{@code Collection}三个属性分流至三个ArrayList,并使用Triple收集。 * - * @param lMapper 左属性收集方法 - * @param mMapper 中属性收集方法 - * @param rMapper 右属性收集方法 - * @param 元素类型 - * @param 左属性类型 - * @param 中属性类型 - * @param 右属性类型 - * @return Triple,List,List> Triple收集的三个List + * @param lMapper 左属性收集方法 + * @param mMapper 中属性收集方法 + * @param rMapper 右属性收集方法 + * @param 元素类型 + * @param 左属性类型 + * @param 中属性类型 + * @param 右属性类型 + * @return {@code Triple,List,List>} Triple收集的三个List * @author Tanglt */ public static - Collector, List, List>, Triple, List, List>> toTripleList(Function lMapper, - Function mMapper, - Function rMapper) { + Collector, List, List>, Triple, List, List>> toTripleList(final Function lMapper, + final Function mMapper, + final Function rMapper) { return toTripleCollection(lMapper, mMapper, rMapper, ArrayList::new, ArrayList::new, ArrayList::new); } /** - * 将一个Collection两个属性分流至两个Collection,并使用Pair收集。需要指定Collection类型 + * 将一个{@code Collection}两个属性分流至两个Collection,并使用Pair收集。需要指定Collection类型 * - * @param lMapper 左属性收集方法 - * @param mMapper 中属性收集方法 - * @param rMapper 右属性收集方法 - * @param newCollectionL 左属性Collection创建方法 - * @param newCollectionM 中属性Collection创建方法 - * @param newCollectionR 右属性Collection创建方法 - * @param 元素类型 - * @param 左属性类型 - * @param 中属性类型 - * @param 右属性类型 - * @param 左分流Collection类型 - * @param 中分流Collection类型 - * @param 右分流Collection类型 - * @return Triple,MC,RC> Triple收集的三个List + * @param lMapper 左属性收集方法 + * @param mMapper 中属性收集方法 + * @param rMapper 右属性收集方法 + * @param newCollectionL 左属性Collection创建方法 + * @param newCollectionM 中属性Collection创建方法 + * @param newCollectionR 右属性Collection创建方法 + * @param 元素类型 + * @param 左属性类型 + * @param 中属性类型 + * @param 右属性类型 + * @param 左分流Collection类型 + * @param 中分流Collection类型 + * @param 右分流Collection类型 + * @return {@code Triple,MC,RC>} Triple收集的三个List * @author Tanglt */ - public static , - MC extends Collection, - RC extends Collection> - Collector,Triple> toTripleCollection(Function lMapper, - Function mMapper, - Function rMapper, - Supplier newCollectionL, - Supplier newCollectionM, - Supplier newCollectionR){ + public static , + MC extends Collection, + RC extends Collection> + Collector, Triple> toTripleCollection(final Function lMapper, + final Function mMapper, + final Function rMapper, + final Supplier newCollectionL, + final Supplier newCollectionM, + final Supplier newCollectionR) { return new SimpleCollector<>( - () -> Triple.of(newCollectionL.get(),newCollectionM.get(), newCollectionR.get()), - (listTriple, element) -> { - L lValue = lMapper.apply(element); - if (lValue != null) { - listTriple.getLeft().add(lValue); - } - M mValue = mMapper.apply(element); - if (mValue != null) { - listTriple.getMiddle().add(mValue); - } - R rValue = rMapper.apply(element); - if (rValue != null) { - listTriple.getRight().add(rValue); - } - }, - (listTriple1, listTriple2) -> { - listTriple1.getLeft().addAll(listTriple2.getLeft()); - listTriple1.getRight().addAll(listTriple2.getRight()); - return listTriple1; - }, - CH_ID); + () -> Triple.of(newCollectionL.get(), newCollectionM.get(), newCollectionR.get()), + (listTriple, element) -> { + final L lValue = lMapper.apply(element); + if (lValue != null) { + listTriple.getLeft().add(lValue); + } + final M mValue = mMapper.apply(element); + if (mValue != null) { + listTriple.getMiddle().add(mValue); + } + final R rValue = rMapper.apply(element); + if (rValue != null) { + listTriple.getRight().add(rValue); + } + }, + (listTriple1, listTriple2) -> { + listTriple1.getLeft().addAll(listTriple2.getLeft()); + listTriple1.getRight().addAll(listTriple2.getRight()); + return listTriple1; + }, + CH_ID); } } 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 4eab5d0d8..4b47e2075 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 @@ -141,13 +141,13 @@ public class CollectorUtilTest { @Test public void testToPairList() { final List> list = Arrays.asList(Pair.of(1,"one"), Pair.of(2,"two")); - Pair, List> pairList = list.stream() + final Pair, List> pairList = list.stream() .collect(CollectorUtil.toPairList(Pair::getLeft, Pair::getRight)); Assertions.assertEquals(pairList.getLeft().size(),list.size()); Assertions.assertEquals(pairList.getRight().size(),list.size()); - Pair, ArrayList> pairMixed = list.stream() + final Pair, ArrayList> pairMixed = list.stream() .collect(CollectorUtil.toPairCollection(Pair::getLeft, Pair::getRight, HashSet::new, ArrayList::new)); Assertions.assertEquals(pairMixed.getLeft().size(),list.size()); @@ -160,14 +160,14 @@ public class CollectorUtilTest { public void testToTripleList() { final List> list = Arrays.asList(Triple.of(1,1L,"one"), Triple.of(2,2L,"two")); - Triple, List, List> tripleList = list.stream() + final Triple, List, List> tripleList = list.stream() .collect(CollectorUtil.toTripleList(Triple::getLeft, Triple::getMiddle, Triple::getRight)); Assertions.assertEquals(tripleList.getLeft().size(),list.size()); Assertions.assertEquals(tripleList.getMiddle().size(),list.size()); Assertions.assertEquals(tripleList.getRight().size(),list.size()); - Triple, HashSet, ArrayList> tripleMixed = list.stream() + final Triple, HashSet, ArrayList> tripleMixed = list.stream() .collect(CollectorUtil.toTripleCollection(Triple::getLeft, Triple::getMiddle, Triple::getRight, HashSet::new, HashSet::new, ArrayList::new)); Assertions.assertEquals(tripleMixed.getLeft().size(),list.size());