diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java index 94f4d357c..05189b4b0 100644 --- a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java @@ -42,6 +42,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.NavigableSet; import java.util.Objects; +import java.util.Optional; import java.util.Set; import java.util.SortedSet; import java.util.Stack; @@ -51,6 +52,7 @@ import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.LinkedBlockingDeque; +import java.util.function.BiConsumer; import java.util.function.Function; import java.util.function.Predicate; import java.util.function.Supplier; @@ -2926,6 +2928,18 @@ public class CollUtil { public static Collection trans(Collection collection, Function function) { return new TransCollection<>(collection, function); } + + /** + * 使用给定的map将集合中的原素进行属性或者值的重新设定 + * @param collection 集合 + * @param map 映射集 + * @param keyGenerate 映射键生成函数 + * @param biConsumer 封装映射到的值函数 + * @author nick_wys + */ + public static void setValueByMap(Collection collection, Map map, Function keyGenerate, BiConsumer biConsumer) { + collection.forEach(x -> Optional.ofNullable(map.get(keyGenerate.apply(x))).ifPresent(y -> biConsumer.accept(x, y))); + } // ---------------------------------------------------------------------------------------------- Interface start