CollectionUtils
static final float DEFAULT_LOAD_FACTOR = 0.75f;
#public static boolean isEmpty(@Nullable Collection<?> collection) null或empty
#public static boolean isEmpty(@Nullable Map<?, ?> map) null或empty
#public static <K, V> HashMap<K, V> newHashMap(int expectedSize) 使用(int) (expectedSize / DEFAULT_LOAD_FACTOR), DEFAULT_LOAD_FACTOR 作为入参
#public static <K, V> LinkedHashMap<K, V> newLinkedHashMap(int expectedSize) 使用(int) (expectedSize / DEFAULT_LOAD_FACTOR), DEFAULT_LOAD_FACTOR 作为入参
#public static List<?> arrayToList(@Nullable Object source) 把source转为数组再转List。转数组过程:若source是Object[] -> Object[];若source是null->Object[0];若source不是数组类型 ->IllegalArgumentException;否则source是数组,以source的数组类型创建数组对象并设置值
#public static <E> void mergeArrayIntoCollection(@Nullable Object array, Collection<E> collection) 把array转成数组(同arrayToList)后,add到collection
#public static <K, V> void mergePropertiesIntoMap(@Nullable Properties props, Map<K, V> map) 把props合并到map
#public static boolean contains(@Nullable Iterator<?> iterator, Object element) 检查iterator中是否包含element
#public static boolean contains(@Nullable Enumeration<?> enumeration, Object element) 检查enumeration中是否包含element
#public static boolean containsInstance(@Nullable Collection<?> collection, Object element) 检查collection中是否包含element(以==方式)
#public static boolean containsAny(Collection<?> source, Collection<?> candidates) 检查source中是否包含candidates中的任意元素 return findFirstMatch(source, candidates) != null;
@Nullable
#public static <E> E findFirstMatch(Collection<?> source, Collection<E> candidates) 在source逐个匹配candidates中的元素,找到第一个即返回
@Nullable
#public static <T> T findValueOfType(Collection<?> collection, @Nullable Class<T> type) 在collection中找到类型是type的元素。若type==null,所有元素都符合;若符合的元素>1个,返回null(不能唯一确定)
@Nullable
#public static Object findValueOfType(Collection<?> collection, Class<?>[] types) 逐个用types中的type,在collection中找到类型是type的元素,匹配到第一个符合的即返回
#public static boolean hasUniqueObject(Collection<?> collection) 检查collection中的元素都可以用==匹配;若collection是null或empty -> false;若前一个跟后一个是!=的 -> false;否则true
@Nullable
#public static Class<?> findCommonElementType(Collection<?> collection) 找到collection中所有元素的公共class。若collection是null或empty -> null;若前一个元素的getClass()跟后一个的getClass() 是 != 的 -> null;否则就是找到
@Nullable
#public static <T> T firstElement(@Nullable Set<T> set) 找到set中的排在第一的元素。若set instanceof SortedSet -> 返回第一个;否则用Iterator的第一个
@Nullable
public static <T> T firstElement(@Nullable List<T> list) return list.get(0);
@Nullable
#public static <T> T lastElement(@Nullable Set<T> set) 找到set中的排在第一的元素。若set instanceof SortedSet -> 返回最后一个;否则用Iterator的最后一个
@Nullable
#public static <T> T lastElement(@Nullable List<T> list) return list.get(list.size() - 1);
#public static <A, E extends A> A[] toArray(Enumeration<E> enumeration, A[] array) 将给定枚举中的元素封送到给定类型的数组中。枚举元素必须可分配给给定数组的类型。返回的数组将是与给定数组不同的实例。
#public static <E> Iterator<E> toIterator(@Nullable Enumeration<E> enumeration) 得到一个对应的枚举迭代器
#public static <K, V> MultiValueMap<K, V> toMultiValueMap(Map<K, List<V>> targetMap) 得到一个对应的MultiValueMap
#public static <K, V> MultiValueMap<K, V> unmodifiableMultiValueMap(MultiValueMap<? extends K, ? extends V> targetMap) 得到一个不可变的MultiValueMap,其每个key对应的List<V>也是不可变的
@Nullablepublic static <T> T lastElement(@Nullable Set<T> set)