package net.tccn.base; import java.lang.reflect.Array; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; /** * Created by liangxianyou at 2019/3/19 18:01. */ public class Utils { /** * 将集合数组合并到一个Set 集合中 * @param 泛型 * @param streams 集合数组 * @return */ public static Stream concat(Stream ... streams) { Stream stream = Stream.empty(); for (int i = 0; i < streams.length; i++) { stream = Stream.concat(stream, streams[i]); } return stream; } /** * 将字符串第一个字母转大写 * @param str 待转换字符串 * @return */ public static String toUpperCaseFirst(String str) { Objects.requireNonNull(str); return str.substring(0, 1).toUpperCase() + str.substring(1); } /** * 转化集合为数组,带泛型支持 * @param values 集合 * @param 泛型 * @return */ public static T[] toArray(Collection values) { if (values == null || values.size() == 0) throw new UnsupportedOperationException("Not supported yet."); Class clazz = null; for (T entity : values) { clazz = entity.getClass(); break; } return values.toArray((T[]) Array.newInstance(clazz, values.size())); } /** * 转化集合为数组,带泛型支持 * @param values 集合 * @param 泛型 * @return */ public static T[] toArray(Stream values) { if (values == null || values.count() == 0) throw new UnsupportedOperationException("Not supported yet."); List list = values.collect(Collectors.toList()); return toArray(list); } /** * * @param type 待加载的class 类型 * @param name class 的实现名称 * @param 泛型 * @return */ public static T getDbSource(Class type, String name) { ServiceLoader loader = ServiceLoader.load(type); Iterator iterator = loader.iterator(); if (iterator.hasNext()) { T t = iterator.next(); if (name.equalsIgnoreCase(t.getType())) { return t; } } return null; } public static boolean isEmpty(Object obj) { if (obj == null) return true; if (obj instanceof List) return ((List) obj).isEmpty(); if (obj instanceof String) return ((String) obj).isEmpty(); if (obj instanceof Map) return ((Map) obj).isEmpty(); if (obj instanceof Collection) return ((Collection) obj).isEmpty(); if (obj instanceof Object[]) return ((Object[]) obj).length == 0; return false; } }