org.macrocloud.kernel.toolkit.utils.CollectionUtil Maven / Gradle / Ivy
package org.macrocloud.kernel.toolkit.utils;
import org.springframework.lang.Nullable;
import org.springframework.util.CollectionUtils;
import java.lang.reflect.Array;
import java.util.*;
import java.util.stream.Collectors;
/**
* 集合工具类.
*
* @author macro
*/
public class CollectionUtil extends CollectionUtils {
/**
* Return {@code true} if the supplied Collection is not {@code null} or empty.
* Otherwise, return {@code false}.
*
* @param collection the Collection to check
* @return whether the given Collection is not empty
*/
public static boolean isNotEmpty(@Nullable Collection> collection) {
return !CollectionUtil.isEmpty(collection);
}
/**
* Return {@code true} if the supplied Map is not {@code null} or empty.
* Otherwise, return {@code false}.
*
* @param map the Map to check
* @return whether the given Map is not empty
*/
public static boolean isNotEmpty(@Nullable Map, ?> map) {
return !CollectionUtil.isEmpty(map);
}
/**
* Check whether the given Array contains the given element.
*
* @param The generic tag
* @param array the Array to check
* @param element the element to look for
* @return {@code true} if found, {@code false} else
*/
public static boolean contains(@Nullable T[] array, final T element) {
if (array == null) {
return false;
}
return Arrays.stream(array).anyMatch(x -> ObjectUtil.nullSafeEquals(x, element));
}
/**
* Concatenates 2 arrays.
*
* @param one 数组1
* @param other 数组2
* @return 新数组
*/
public static String[] concat(String[] one, String[] other) {
return concat(one, other, String.class);
}
/**
* Concatenates 2 arrays.
*
* @param the generic type
* @param one 数组1
* @param other 数组2
* @param clazz 数组类
* @return 新数组
*/
public static T[] concat(T[] one, T[] other, Class clazz) {
T[] target = (T[]) Array.newInstance(clazz, one.length + other.length);
System.arraycopy(one, 0, target, 0, one.length);
System.arraycopy(other, 0, target, one.length, other.length);
return target;
}
/**
* 对象是否为数组对象.
*
* @param obj 对象
* @return 是否为数组对象,如果为{@code null} 返回false
*/
public static boolean isArray(Object obj) {
if (null == obj) {
return false;
}
return obj.getClass().isArray();
}
/**
* 不可变 Set.
*
* @param 泛型
* @param es 对象
* @return 集合
*/
@SafeVarargs
public static Set ofImmutableSet(E... es) {
Objects.requireNonNull(es, "args es is null.");
return Arrays.stream(es).collect(Collectors.toSet());
}
/**
* 不可变 List.
*
* @param 泛型
* @param es 对象
* @return 集合
*/
@SafeVarargs
public static List ofImmutableList(E... es) {
Objects.requireNonNull(es, "args es is null.");
return Arrays.stream(es).collect(Collectors.toList());
}
/**
* Iterable 转换为List集合.
*
* @param 泛型
* @param elements Iterable
* @return 集合
*/
public static List toList(Iterable elements) {
Objects.requireNonNull(elements, "elements es is null.");
if (elements instanceof Collection) {
return new ArrayList((Collection) elements);
}
Iterator iterator = elements.iterator();
List list = new ArrayList<>();
while (iterator.hasNext()) {
list.add(iterator.next());
}
return list;
}
/**
* 将key value 数组转为 map.
*
* @param key
* @param value
* @param keysValues key value 数组
* @return map 集合
*/
public static Map toMap(Object... keysValues) {
int kvLength = keysValues.length;
if (kvLength % 2 != 0) {
throw new IllegalArgumentException("wrong number of arguments for met, keysValues length can not be odd");
}
Map keyValueMap = new HashMap<>(kvLength);
for (int i = kvLength - 2; i >= 0; i -= 2) {
Object key = keysValues[i];
Object value = keysValues[i + 1];
keyValueMap.put((K) key, (V) value);
}
return keyValueMap;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy