mirror of
				https://github.com/YunaiV/ruoyi-vue-pro.git
				synced 2025-10-31 02:28:03 +08:00 
			
		
		
		
	新增自定义对象的去重
新增 convertMap 的重载方法
This commit is contained in:
		| @ -4,8 +4,10 @@ import cn.hutool.core.collection.CollUtil; | |||||||
| import cn.hutool.core.collection.CollectionUtil; | import cn.hutool.core.collection.CollectionUtil; | ||||||
|  |  | ||||||
| import java.util.*; | import java.util.*; | ||||||
|  | import java.util.function.BinaryOperator; | ||||||
| import java.util.function.Function; | import java.util.function.Function; | ||||||
| import java.util.function.Predicate; | import java.util.function.Predicate; | ||||||
|  | import java.util.function.Supplier; | ||||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @ -30,6 +32,20 @@ public class CollectionUtils { | |||||||
|         return from.stream().filter(predicate).collect(Collectors.toList()); |         return from.stream().filter(predicate).collect(Collectors.toList()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public static <T, R> List<T> distinct(Collection<T> from, Function<T, R> keyMapper) { | ||||||
|  |         if (CollUtil.isEmpty(from)) { | ||||||
|  |             return new ArrayList<>(); | ||||||
|  |         } | ||||||
|  |         return distinct(from, keyMapper, (t1, t2) -> t1); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static <T, R> List<T> distinct(Collection<T> from, Function<T, R> keyMapper, BinaryOperator<T> cover) { | ||||||
|  |         if (CollUtil.isEmpty(from)) { | ||||||
|  |             return new ArrayList<>(); | ||||||
|  |         } | ||||||
|  |         return new ArrayList<>(convertMap(from, keyMapper, Function.identity(), cover).values()); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     public static <T, U> List<U> convertList(Collection<T> from, Function<T, U> func) { |     public static <T, U> List<U> convertList(Collection<T> from, Function<T, U> func) { | ||||||
|         if (CollUtil.isEmpty(from)) { |         if (CollUtil.isEmpty(from)) { | ||||||
|             return new ArrayList<>(); |             return new ArrayList<>(); | ||||||
| @ -48,30 +64,57 @@ public class CollectionUtils { | |||||||
|         if (CollUtil.isEmpty(from)) { |         if (CollUtil.isEmpty(from)) { | ||||||
|             return new HashMap<>(); |             return new HashMap<>(); | ||||||
|         } |         } | ||||||
|         return from.stream().collect(Collectors.toMap(keyFunc, item -> item)); |         return convertMap(from, keyFunc, Function.identity()); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static <T, K> Map<K, T> convertMap(Collection<T> from, Function<T, K> keyFunc, Supplier<? extends Map<K, T>> supplier) { | ||||||
|  |         if (CollUtil.isEmpty(from)) { | ||||||
|  |             return supplier.get(); | ||||||
|  |         } | ||||||
|  |         return convertMap(from, keyFunc, Function.identity(), supplier); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static <T, K, V> Map<K, V> convertMap(Collection<T> from, Function<T, K> keyFunc, Function<T, V> valueFunc) { |     public static <T, K, V> Map<K, V> convertMap(Collection<T> from, Function<T, K> keyFunc, Function<T, V> valueFunc) { | ||||||
|         if (CollUtil.isEmpty(from)) { |         if (CollUtil.isEmpty(from)) { | ||||||
|             return new HashMap<>(); |             return new HashMap<>(); | ||||||
|         } |         } | ||||||
|         return from.stream().collect(Collectors.toMap(keyFunc, valueFunc)); |         return convertMap(from, keyFunc, valueFunc, (v1, v2) -> v1); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static <T, K, V> Map<K, V> convertMap(Collection<T> from, Function<T, K> keyFunc, Function<T, V> valueFunc, BinaryOperator<V> mergeFunction) { | ||||||
|  |         if (CollUtil.isEmpty(from)) { | ||||||
|  |             return new HashMap<>(); | ||||||
|  |         } | ||||||
|  |         return convertMap(from, keyFunc, valueFunc, mergeFunction, HashMap::new); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static <T, K, V> Map<K, V> convertMap(Collection<T> from, Function<T, K> keyFunc, Function<T, V> valueFunc, Supplier<? extends Map<K, V>> supplier) { | ||||||
|  |         if (CollUtil.isEmpty(from)) { | ||||||
|  |             return supplier.get(); | ||||||
|  |         } | ||||||
|  |         return convertMap(from, keyFunc, valueFunc, (v1, v2) -> v1, supplier); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static <T, K, V> Map<K, V> convertMap(Collection<T> from, Function<T, K> keyFunc, Function<T, V> valueFunc, BinaryOperator<V> mergeFunction, Supplier<? extends Map<K, V>> supplier) { | ||||||
|  |         if (CollUtil.isEmpty(from)) { | ||||||
|  |             return new HashMap<>(); | ||||||
|  |         } | ||||||
|  |         return from.stream().collect(Collectors.toMap(keyFunc, valueFunc, mergeFunction, supplier)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static <T, K> Map<K, List<T>> convertMultiMap(Collection<T> from, Function<T, K> keyFunc) { |     public static <T, K> Map<K, List<T>> convertMultiMap(Collection<T> from, Function<T, K> keyFunc) { | ||||||
|         if (CollUtil.isEmpty(from)) { |         if (CollUtil.isEmpty(from)) { | ||||||
|             return new HashMap<>(); |             return new HashMap<>(); | ||||||
|         } |         } | ||||||
|         return from.stream().collect(Collectors.groupingBy(keyFunc, |         return from.stream().collect(Collectors.groupingBy(keyFunc, Collectors.mapping(t -> t, Collectors.toList()))); | ||||||
|                 Collectors.mapping(t -> t, Collectors.toList()))); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static <T, K, V> Map<K, List<V>> convertMultiMap(Collection<T> from, Function<T, K> keyFunc, Function<T, V> valueFunc) { |     public static <T, K, V> Map<K, List<V>> convertMultiMap(Collection<T> from, Function<T, K> keyFunc, Function<T, V> valueFunc) { | ||||||
|         if (CollUtil.isEmpty(from)) { |         if (CollUtil.isEmpty(from)) { | ||||||
|             return new HashMap<>(); |             return new HashMap<>(); | ||||||
|         } |         } | ||||||
|         return from.stream().collect(Collectors.groupingBy(keyFunc, |         return from.stream() | ||||||
|                 Collectors.mapping(valueFunc, Collectors.toList()))); |                    .collect(Collectors.groupingBy(keyFunc, Collectors.mapping(valueFunc, Collectors.toList()))); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // 暂时没想好名字,先以 2 结尾噶 |     // 暂时没想好名字,先以 2 结尾噶 | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 hexiaowu
					hexiaowu