From 60e1beabe878186712bd5c94bb3bf0da6ea65288 Mon Sep 17 00:00:00 2001 From: liaozan <378024053@qq.com> Date: Wed, 19 Jul 2023 22:46:40 +0800 Subject: [PATCH] Polish --- .../schbrain/common/util/JacksonUtils.java | 11 +- .../com/schbrain/common/util/StreamUtils.java | 102 +++++++++++------- 2 files changed, 70 insertions(+), 43 deletions(-) diff --git a/commons/common-util/src/main/java/com/schbrain/common/util/JacksonUtils.java b/commons/common-util/src/main/java/com/schbrain/common/util/JacksonUtils.java index 983b794..76e5653 100644 --- a/commons/common-util/src/main/java/com/schbrain/common/util/JacksonUtils.java +++ b/commons/common-util/src/main/java/com/schbrain/common/util/JacksonUtils.java @@ -62,6 +62,9 @@ public class JacksonUtils { } public static String toJsonString(Object data, boolean pretty) { + if (data == null) { + return null; + } try { if (pretty) { return getPrettyObjectMapper().writeValueAsString(data); @@ -220,11 +223,7 @@ public class JacksonUtils { } public static T convertValue(Object fromValue, Class toValueType) { - try { - return getObjectMapper().convertValue(fromValue, toValueType); - } catch (Exception e) { - throw new JSONException("JSON 转换出错", e); - } + return convertValue(fromValue, constructType(toValueType)); } public static T convertValue(Object fromValue, JavaType toValueType) { @@ -235,4 +234,4 @@ public class JacksonUtils { } } -} \ No newline at end of file +} diff --git a/commons/common-util/src/main/java/com/schbrain/common/util/StreamUtils.java b/commons/common-util/src/main/java/com/schbrain/common/util/StreamUtils.java index a7f7b4e..533f038 100644 --- a/commons/common-util/src/main/java/com/schbrain/common/util/StreamUtils.java +++ b/commons/common-util/src/main/java/com/schbrain/common/util/StreamUtils.java @@ -29,59 +29,64 @@ public class StreamUtils { return filterToList(data, predicate, Function.identity()); } + public static List filterToList(Iterable data, Function mapper, Predicate predicate) { + return filter(data, mapper, predicate, Function.identity(), Collectors.toList()); + } + public static List filterToList(Iterable data, Predicate predicate, Function mapper) { - return filter(data, predicate, mapper, Collectors.toList()); + return filter(data, Function.identity(), predicate, mapper, Collectors.toList()); } public static Set filterToSet(Iterable data, Predicate predicate) { return filterToSet(data, predicate, Function.identity()); } + public static Set filterToSet(Iterable data, Function mapper, Predicate predicate) { + return filter(data, mapper, predicate, Function.identity(), Collectors.toSet()); + } + public static Set filterToSet(Iterable data, Predicate predicate, Function mapper) { - return filter(data, predicate, mapper, Collectors.toSet()); + return filter(data, Function.identity(), predicate, mapper, Collectors.toSet()); } - public static > V filter(Iterable data, Predicate predicate, Function mapper, Collector collector) { - return from(data).filter(predicate).map(mapper).collect(collector); + public static R filter(Iterable data, Function keyMapper, Predicate predicate, Function valueMapper, Collector collector) { + return from(data).map(keyMapper).filter(predicate).map(valueMapper).collect(collector); } - public static List toList(Iterable data, Function mapper) { - return toList(data, mapper, false); + public static List toList(Iterable data, Function keyMapper) { + return toList(data, keyMapper, false); } - public static List toList(Iterable data, Function mapper, boolean distinct) { - return toList(data, mapper, distinct, false); + public static List toList(Iterable data, Function keyMapper, Function valueMapper) { + return toList(data, keyMapper, valueMapper, false, false); } - public static List toList(Iterable data, Function mapper, boolean distinct, boolean discardNull) { - return extract(data, mapper, distinct, discardNull, Collectors.toList()); + public static List toList(Iterable data, Function keyMapper, boolean distinct) { + return toList(data, keyMapper, Function.identity(), distinct, false); } - public static Set toSet(Iterable data, Function mapper) { - return toSet(data, mapper, false); + public static List toList(Iterable data, Function keyMapper, boolean distinct, boolean discardNull) { + return toList(data, keyMapper, Function.identity(), distinct, discardNull); } - public static Set toSet(Iterable data, Function mapper, boolean discardNull) { - return extract(data, mapper, discardNull, false, Collectors.toSet()); + public static List toList(Iterable data, Function keyMapper, Function valueMapper, boolean distinct, boolean discardNull) { + return extract(data, keyMapper, distinct, valueMapper, discardNull, Collectors.toList()); } - public static R extract(Iterable data, Function mapper, boolean distinct, boolean discardNull, Collector collector) { - Predicate predicate = null; - if (discardNull) { - predicate = Objects::nonNull; - } - return extract(data, mapper, predicate, distinct, collector); + public static Set toSet(Iterable data, Function keyMapper) { + return toSet(data, keyMapper, Function.identity()); } - public static R extract(Iterable data, Function mapper, Predicate predicate, boolean distinct, Collector collector) { - Stream stream = from(data).map(mapper); - if (distinct) { - stream = stream.distinct(); - } - if (predicate != null) { - stream = stream.filter(predicate); - } - return stream.collect(collector); + public static Set toSet(Iterable data, Function keyMapper, Function valueMapper) { + return toSet(data, keyMapper, valueMapper, false); + } + + public static Set toSet(Iterable data, Function keyMapper, boolean discardNull) { + return toSet(data, keyMapper, Function.identity(), discardNull); + } + + public static Set toSet(Iterable data, Function keyMapper, Function valueMapper, boolean discardNull) { + return extract(data, keyMapper, false, valueMapper, discardNull, Collectors.toSet()); } public static Map toMap(Iterable data, Function keyMapper) { @@ -108,20 +113,20 @@ public class StreamUtils { return from(data).collect(Collectors.toMap(keyMapper, valueMapper, (oldValue, newValue) -> oldValue, mapFactory)); } - public static Map> groupBy(Iterable data, Function mapper) { - return groupBy(data, mapper, false); + public static Map> groupBy(Iterable data, Function keyMapper) { + return groupBy(data, keyMapper, false); } public static Map> groupBy(Iterable data, Function keyMapper, boolean ignoreNullKey) { return groupBy(data, keyMapper, Collectors.toList(), ignoreNullKey); } - public static Map groupBy(Iterable data, Function mapper, Collector collectors) { - return groupBy(data, mapper, collectors, false); + public static Map groupBy(Iterable data, Function keyMapper, Collector collectors) { + return groupBy(data, keyMapper, collectors, false); } - public static Map groupBy(Iterable data, Function mapper, Collector collectors, boolean discardNullKey) { - return groupBy(data, mapper, Function.identity(), collectors, discardNullKey); + public static Map groupBy(Iterable data, Function keyMapper, Collector collectors, boolean discardNullKey) { + return groupBy(data, keyMapper, Function.identity(), collectors, discardNullKey); } public static Map> groupBy(Iterable data, Function keyMapper, Function valueMapper) { @@ -156,8 +161,12 @@ public class StreamUtils { return join(data, delimiter, Objects::toString); } - public static String join(Iterable data, String delimiter, Function mapper) { - return from(data).map(mapper).collect(joining(delimiter)); + public static String join(Iterable data, String delimiter, Function toStringFunction) { + return from(data).map(toStringFunction).collect(joining(delimiter)); + } + + public static List split(String data) { + return split(data, Function.identity()); } public static List split(String data, Function mapper) { @@ -165,6 +174,9 @@ public class StreamUtils { } public static List split(String data, String delimiter, Function mapper) { + if (StringUtils.isBlank(data)) { + return new ArrayList<>(); + } return Arrays.stream(StringUtils.split(data, delimiter)).map(mapper).collect(Collectors.toList()); } @@ -177,4 +189,20 @@ public class StreamUtils { return StreamSupport.stream(source.spliterator(), parallel); } + private static R extract(Iterable data, Function mapper, boolean distinct, Function valueMapper, boolean discardNull, Collector collector) { + Predicate predicate = any -> true; + if (discardNull) { + predicate = Objects::nonNull; + } + return extract(data, mapper, predicate, distinct, valueMapper, collector); + } + + private static R extract(Iterable data, Function keyMapper, Predicate predicate, boolean distinct, Function valueMapper, Collector collector) { + Stream stream = from(data).map(keyMapper); + if (distinct) { + stream = stream.distinct(); + } + return stream.filter(predicate).map(valueMapper).collect(collector); + } + } -- GitLab