|
@@ -23,15 +23,16 @@ public class ExtUtil {
|
|
|
*
|
|
|
* @param list
|
|
|
* @param property
|
|
|
+ * @param <K>
|
|
|
* @param <V>
|
|
|
* @return
|
|
|
*/
|
|
|
- public static <V> Map<String, List<V>> getKeyList(List<V> list, String property) {
|
|
|
+ public static <K, V> Map<K, List<V>> getKeyList(List<V> list, String property) {
|
|
|
if (ListUtil.isEmpty(list)) {
|
|
|
return new LinkedHashMap<>();
|
|
|
}
|
|
|
return list.stream().collect(
|
|
|
- Collectors.groupingBy(k -> ReflectUtil.getProperty(k, property)));
|
|
|
+ Collectors.groupingBy(r -> ReflectUtil.getProperty(r, property), LinkedHashMap::new, Collectors.toList()));
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -39,22 +40,23 @@ public class ExtUtil {
|
|
|
*
|
|
|
* @param list
|
|
|
* @param property
|
|
|
+ * @param <K>
|
|
|
* @param <V>
|
|
|
* @return
|
|
|
*/
|
|
|
- public static <V> Map<String, V> getKeyObject(List<V> list, String property) {
|
|
|
+ public static <K, V> Map<K, V> getKeyObject(List<V> list, String property) {
|
|
|
if (ListUtil.isEmpty(list)) {
|
|
|
return new LinkedHashMap<>();
|
|
|
}
|
|
|
return list.stream().collect(
|
|
|
- Collectors.toMap(k -> ReflectUtil.getProperty(k, property), v -> v, (v1, v2) -> (v2)));
|
|
|
+ Collectors.toMap(k -> ReflectUtil.getProperty(k, property), v -> v, (v1, v2) -> (v2), LinkedHashMap::new));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 以Map<key, V> 形式返回,如果key相同,会覆盖前面的内容
|
|
|
*
|
|
|
- * @param list 列表
|
|
|
- * @param splitSmybool key分隔符
|
|
|
+ * @param list 列表
|
|
|
+ * @param splitSmybool key分隔符
|
|
|
* @param multiProperty 多个属性
|
|
|
* @param <V>
|
|
|
* @return
|
|
@@ -64,19 +66,19 @@ public class ExtUtil {
|
|
|
return new LinkedHashMap<>();
|
|
|
}
|
|
|
return list.stream().collect(Collectors.toMap(k -> {
|
|
|
- List<String> key = Lists.newArrayList();
|
|
|
+ List<String> keyList = Lists.newArrayList();
|
|
|
for (String property : multiProperty) {
|
|
|
- key.add(ReflectUtil.getProperty(k, property));
|
|
|
+ keyList.add(ReflectUtil.getProperty(k, property));
|
|
|
}
|
|
|
- return StringUtils.join(key, splitSmybool);
|
|
|
- }, v -> v, (v1, v2) -> (v2)));
|
|
|
+ return StringUtils.join(keyList, splitSmybool);
|
|
|
+ }, v -> v, (v1, v2) -> (v2), LinkedHashMap::new));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 以Map<key, List<V>> 形式返回
|
|
|
*
|
|
|
- * @param list 列表
|
|
|
- * @param splitSmybool key分隔符
|
|
|
+ * @param list 列表
|
|
|
+ * @param splitSmybool key分隔符
|
|
|
* @param multiProperty 多个属性
|
|
|
* @param <V>
|
|
|
* @return
|
|
@@ -86,12 +88,12 @@ public class ExtUtil {
|
|
|
return new LinkedHashMap<>();
|
|
|
}
|
|
|
return list.stream().collect(Collectors.groupingBy(k -> {
|
|
|
- List<String> key = Lists.newArrayList();
|
|
|
+ List<String> keyList = Lists.newArrayList();
|
|
|
for (String property : multiProperty) {
|
|
|
- key.add(ReflectUtil.getProperty(k, property));
|
|
|
+ keyList.add(ReflectUtil.getProperty(k, property));
|
|
|
}
|
|
|
- return StringUtils.join(key, splitSmybool);
|
|
|
- }));
|
|
|
+ return StringUtils.join(keyList, splitSmybool);
|
|
|
+ }, LinkedHashMap::new, Collectors.toList()));
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -109,7 +111,7 @@ public class ExtUtil {
|
|
|
return new LinkedHashMap<>();
|
|
|
}
|
|
|
return list.stream().collect(Collectors.toMap(k -> ReflectUtil.getProperty(k, keyProperty),
|
|
|
- v -> ReflectUtil.getProperty(v, valueProperty), (v1, v2) -> (v2)));
|
|
|
+ v -> ReflectUtil.getProperty(v, valueProperty), (v1, v2) -> (v2), LinkedHashMap::new));
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -217,5 +219,6 @@ public class ExtUtil {
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
|
+
|
|
|
}
|
|
|
}
|