summaryrefslogtreecommitdiffstats
path: root/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/utils/MapUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-dao/src/main/java/org/openecomp/sdc/be/dao/utils/MapUtil.java')
-rw-r--r--catalog-dao/src/main/java/org/openecomp/sdc/be/dao/utils/MapUtil.java38
1 files changed, 38 insertions, 0 deletions
diff --git a/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/utils/MapUtil.java b/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/utils/MapUtil.java
index 84802ce293..e8b2e0c9ad 100644
--- a/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/utils/MapUtil.java
+++ b/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/utils/MapUtil.java
@@ -20,8 +20,14 @@
package org.openecomp.sdc.be.dao.utils;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import java.util.Optional;
+import java.util.function.Function;
+import java.util.stream.Collectors;
/**
* Utility class to ease map manipulation.
@@ -63,6 +69,38 @@ public final class MapUtil {
}
/**
+ *
+ * @param valuesToMap the list of values to group
+ * @param groupingFunction the function to group the list values by
+ * @return a map of list of values grouped by a key, as specified in the {@code groupingFunction}
+ */
+ public static <K,V> Map<K,List<V>> groupListBy(Collection<V> valuesToMap, Function<V,K> groupingFunction) {
+ return valuesToMap.stream().collect(Collectors.groupingBy(groupingFunction));
+ }
+
+ /**
+ *
+ * @param valuesToMap list of values to map
+ * @param mappingFunction a function which specifies how to map each element on the list
+ * @return a map created by mapping each element from the {@code valuesToMap} as specified in the {@code mappingFunction}
+ */
+ public static <K,V> Map<K,V> toMap(Collection<V> valuesToMap, Function<V,K> mappingFunction) {
+ return Optional.ofNullable(valuesToMap).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(mappingFunction, Function.identity()));
+ }
+
+ /**
+ *
+ * @param map the map of which it keys to convert
+ * @param keyMappingFunction a function which converts the key object
+ * @return a map with converted keys.
+ */
+ public static <K,U, V> Map<U, List<V>> convertMapKeys(Map<K, List<V>> map, Function<K,U> keyMappingFunction) {
+ return map.entrySet().stream()
+ .collect(Collectors.toMap(entry -> keyMappingFunction.apply(entry.getKey()),
+ Map.Entry::getValue));
+ }
+
+ /**
* Create a new hash map and fills it from the given keys and values
* (keys[index] -> values[index].
*