Commit 60e1beab authored by liaozan's avatar liaozan 🏀

Polish

parent 22175b52
...@@ -62,6 +62,9 @@ public class JacksonUtils { ...@@ -62,6 +62,9 @@ public class JacksonUtils {
} }
public static String toJsonString(Object data, boolean pretty) { public static String toJsonString(Object data, boolean pretty) {
if (data == null) {
return null;
}
try { try {
if (pretty) { if (pretty) {
return getPrettyObjectMapper().writeValueAsString(data); return getPrettyObjectMapper().writeValueAsString(data);
...@@ -220,11 +223,7 @@ public class JacksonUtils { ...@@ -220,11 +223,7 @@ public class JacksonUtils {
} }
public static <T> T convertValue(Object fromValue, Class<T> toValueType) { public static <T> T convertValue(Object fromValue, Class<T> toValueType) {
try { return convertValue(fromValue, constructType(toValueType));
return getObjectMapper().convertValue(fromValue, toValueType);
} catch (Exception e) {
throw new JSONException("JSON 转换出错", e);
}
} }
public static <T> T convertValue(Object fromValue, JavaType toValueType) { public static <T> T convertValue(Object fromValue, JavaType toValueType) {
...@@ -235,4 +234,4 @@ public class JacksonUtils { ...@@ -235,4 +234,4 @@ public class JacksonUtils {
} }
} }
} }
\ No newline at end of file
...@@ -29,59 +29,64 @@ public class StreamUtils { ...@@ -29,59 +29,64 @@ public class StreamUtils {
return filterToList(data, predicate, Function.identity()); return filterToList(data, predicate, Function.identity());
} }
public static <T, V> List<V> filterToList(Iterable<T> data, Function<T, V> mapper, Predicate<V> predicate) {
return filter(data, mapper, predicate, Function.identity(), Collectors.toList());
}
public static <T, V> List<V> filterToList(Iterable<T> data, Predicate<T> predicate, Function<T, V> mapper) { public static <T, V> List<V> filterToList(Iterable<T> data, Predicate<T> predicate, Function<T, V> mapper) {
return filter(data, predicate, mapper, Collectors.toList()); return filter(data, Function.identity(), predicate, mapper, Collectors.toList());
} }
public static <T> Set<T> filterToSet(Iterable<T> data, Predicate<T> predicate) { public static <T> Set<T> filterToSet(Iterable<T> data, Predicate<T> predicate) {
return filterToSet(data, predicate, Function.identity()); return filterToSet(data, predicate, Function.identity());
} }
public static <T, V> Set<V> filterToSet(Iterable<T> data, Function<T, V> mapper, Predicate<V> predicate) {
return filter(data, mapper, predicate, Function.identity(), Collectors.toSet());
}
public static <T, V> Set<V> filterToSet(Iterable<T> data, Predicate<T> predicate, Function<T, V> mapper) { public static <T, V> Set<V> filterToSet(Iterable<T> data, Predicate<T> predicate, Function<T, V> mapper) {
return filter(data, predicate, mapper, Collectors.toSet()); return filter(data, Function.identity(), predicate, mapper, Collectors.toSet());
} }
public static <T, E, V extends Iterable<E>> V filter(Iterable<T> data, Predicate<T> predicate, Function<T, E> mapper, Collector<E, ?, V> collector) { public static <T, E, V, R> R filter(Iterable<T> data, Function<T, E> keyMapper, Predicate<E> predicate, Function<E, V> valueMapper, Collector<V, ?, R> collector) {
return from(data).filter(predicate).map(mapper).collect(collector); return from(data).map(keyMapper).filter(predicate).map(valueMapper).collect(collector);
} }
public static <T, E> List<E> toList(Iterable<T> data, Function<T, E> mapper) { public static <T, E> List<E> toList(Iterable<T> data, Function<T, E> keyMapper) {
return toList(data, mapper, false); return toList(data, keyMapper, false);
} }
public static <T, E> List<E> toList(Iterable<T> data, Function<T, E> mapper, boolean distinct) { public static <T, E, V> List<V> toList(Iterable<T> data, Function<T, E> keyMapper, Function<E, V> valueMapper) {
return toList(data, mapper, distinct, false); return toList(data, keyMapper, valueMapper, false, false);
} }
public static <T, E> List<E> toList(Iterable<T> data, Function<T, E> mapper, boolean distinct, boolean discardNull) { public static <T, E> List<E> toList(Iterable<T> data, Function<T, E> keyMapper, boolean distinct) {
return extract(data, mapper, distinct, discardNull, Collectors.toList()); return toList(data, keyMapper, Function.identity(), distinct, false);
} }
public static <T, E> Set<E> toSet(Iterable<T> data, Function<T, E> mapper) { public static <T, E> List<E> toList(Iterable<T> data, Function<T, E> keyMapper, boolean distinct, boolean discardNull) {
return toSet(data, mapper, false); return toList(data, keyMapper, Function.identity(), distinct, discardNull);
} }
public static <T, E> Set<E> toSet(Iterable<T> data, Function<T, E> mapper, boolean discardNull) { public static <T, E, V> List<V> toList(Iterable<T> data, Function<T, E> keyMapper, Function<E, V> valueMapper, boolean distinct, boolean discardNull) {
return extract(data, mapper, discardNull, false, Collectors.toSet()); return extract(data, keyMapper, distinct, valueMapper, discardNull, Collectors.toList());
} }
public static <T, E, R> R extract(Iterable<T> data, Function<T, E> mapper, boolean distinct, boolean discardNull, Collector<E, ?, R> collector) { public static <T, E> Set<E> toSet(Iterable<T> data, Function<T, E> keyMapper) {
Predicate<E> predicate = null; return toSet(data, keyMapper, Function.identity());
if (discardNull) {
predicate = Objects::nonNull;
}
return extract(data, mapper, predicate, distinct, collector);
} }
public static <T, E, R> R extract(Iterable<T> data, Function<T, E> mapper, Predicate<E> predicate, boolean distinct, Collector<E, ?, R> collector) { public static <T, E, V> Set<V> toSet(Iterable<T> data, Function<T, E> keyMapper, Function<E, V> valueMapper) {
Stream<E> stream = from(data).map(mapper); return toSet(data, keyMapper, valueMapper, false);
if (distinct) { }
stream = stream.distinct();
} public static <T, V> Set<V> toSet(Iterable<T> data, Function<T, V> keyMapper, boolean discardNull) {
if (predicate != null) { return toSet(data, keyMapper, Function.identity(), discardNull);
stream = stream.filter(predicate); }
}
return stream.collect(collector); public static <T, E, V> Set<V> toSet(Iterable<T> data, Function<T, E> keyMapper, Function<E, V> valueMapper, boolean discardNull) {
return extract(data, keyMapper, false, valueMapper, discardNull, Collectors.toSet());
} }
public static <K, V> Map<K, V> toMap(Iterable<V> data, Function<V, K> keyMapper) { public static <K, V> Map<K, V> toMap(Iterable<V> data, Function<V, K> keyMapper) {
...@@ -108,20 +113,20 @@ public class StreamUtils { ...@@ -108,20 +113,20 @@ public class StreamUtils {
return from(data).collect(Collectors.toMap(keyMapper, valueMapper, (oldValue, newValue) -> oldValue, mapFactory)); return from(data).collect(Collectors.toMap(keyMapper, valueMapper, (oldValue, newValue) -> oldValue, mapFactory));
} }
public static <K, V> Map<K, List<V>> groupBy(Iterable<V> data, Function<V, K> mapper) { public static <K, V> Map<K, List<V>> groupBy(Iterable<V> data, Function<V, K> keyMapper) {
return groupBy(data, mapper, false); return groupBy(data, keyMapper, false);
} }
public static <K, T> Map<K, List<T>> groupBy(Iterable<T> data, Function<T, K> keyMapper, boolean ignoreNullKey) { public static <K, T> Map<K, List<T>> groupBy(Iterable<T> data, Function<T, K> keyMapper, boolean ignoreNullKey) {
return groupBy(data, keyMapper, Collectors.toList(), ignoreNullKey); return groupBy(data, keyMapper, Collectors.toList(), ignoreNullKey);
} }
public static <K, T, V> Map<K, V> groupBy(Iterable<T> data, Function<T, K> mapper, Collector<T, ?, V> collectors) { public static <K, T, V> Map<K, V> groupBy(Iterable<T> data, Function<T, K> keyMapper, Collector<T, ?, V> collectors) {
return groupBy(data, mapper, collectors, false); return groupBy(data, keyMapper, collectors, false);
} }
public static <K, T, V> Map<K, V> groupBy(Iterable<T> data, Function<T, K> mapper, Collector<T, ?, V> collectors, boolean discardNullKey) { public static <K, T, V> Map<K, V> groupBy(Iterable<T> data, Function<T, K> keyMapper, Collector<T, ?, V> collectors, boolean discardNullKey) {
return groupBy(data, mapper, Function.identity(), collectors, discardNullKey); return groupBy(data, keyMapper, Function.identity(), collectors, discardNullKey);
} }
public static <K, T, V> Map<K, List<V>> groupBy(Iterable<T> data, Function<T, K> keyMapper, Function<T, V> valueMapper) { public static <K, T, V> Map<K, List<V>> groupBy(Iterable<T> data, Function<T, K> keyMapper, Function<T, V> valueMapper) {
...@@ -156,8 +161,12 @@ public class StreamUtils { ...@@ -156,8 +161,12 @@ public class StreamUtils {
return join(data, delimiter, Objects::toString); return join(data, delimiter, Objects::toString);
} }
public static <T> String join(Iterable<T> data, String delimiter, Function<T, String> mapper) { public static <T> String join(Iterable<T> data, String delimiter, Function<T, String> toStringFunction) {
return from(data).map(mapper).collect(joining(delimiter)); return from(data).map(toStringFunction).collect(joining(delimiter));
}
public static List<String> split(String data) {
return split(data, Function.identity());
} }
public static <T> List<T> split(String data, Function<String, T> mapper) { public static <T> List<T> split(String data, Function<String, T> mapper) {
...@@ -165,6 +174,9 @@ public class StreamUtils { ...@@ -165,6 +174,9 @@ public class StreamUtils {
} }
public static <T> List<T> split(String data, String delimiter, Function<String, T> mapper) { public static <T> List<T> split(String data, String delimiter, Function<String, T> mapper) {
if (StringUtils.isBlank(data)) {
return new ArrayList<>();
}
return Arrays.stream(StringUtils.split(data, delimiter)).map(mapper).collect(Collectors.toList()); return Arrays.stream(StringUtils.split(data, delimiter)).map(mapper).collect(Collectors.toList());
} }
...@@ -177,4 +189,20 @@ public class StreamUtils { ...@@ -177,4 +189,20 @@ public class StreamUtils {
return StreamSupport.stream(source.spliterator(), parallel); return StreamSupport.stream(source.spliterator(), parallel);
} }
private static <T, E, R, V> R extract(Iterable<T> data, Function<T, E> mapper, boolean distinct, Function<E, V> valueMapper, boolean discardNull, Collector<V, ?, R> collector) {
Predicate<E> predicate = any -> true;
if (discardNull) {
predicate = Objects::nonNull;
}
return extract(data, mapper, predicate, distinct, valueMapper, collector);
}
private static <T, E, R, V> R extract(Iterable<T> data, Function<T, E> keyMapper, Predicate<E> predicate, boolean distinct, Function<E, V> valueMapper, Collector<V, ?, R> collector) {
Stream<E> stream = from(data).map(keyMapper);
if (distinct) {
stream = stream.distinct();
}
return stream.filter(predicate).map(valueMapper).collect(collector);
}
} }
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment