package cn.mutils.core.collection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import cn.mutils.app.util.AppUtil;
import cn.mutils.core.beans.BeanField;
import cn.mutils.core.beans.ObjectUtil;
import cn.mutils.core.reflect.ReflectUtil;
@SuppressWarnings({"unchecked", "unused"})
public class CollectionUtil {
public static <T extends List<E>, E> T truncate(T list, int maxSize) {
if (list == null) {
return null;
}
if (list.size() <= maxSize) {
return list;
}
return (T) list.subList(0, maxSize);
}
public static void clear(Object[] array) {
if (array == null) {
return;
}
for (int i = 0, size = array.length; i < size; i++) {
array[i] = null;
}
}
public static <T> ArrayList<T> asArrayList(T[] array) {
ArrayList<T> arrayList = new ArrayList<T>();
if (array == null) {
return arrayList;
}
Collections.addAll(arrayList, array);
return arrayList;
}
public static <T> T findByProperty(List<T> list, String property, Object propertyValue) {
if (list == null) {
return null;
}
if (list.size() == 0) {
return null;
}
BeanField propertyField = BeanField.getField(list.get(0), property);
if (propertyField == null) {
return null;
}
for (T element : list) {
if (ObjectUtil.equals(propertyValue, ReflectUtil.get(element, propertyField))) {
return element;
}
}
return null;
}
public static <T> List<T> findAllByProperty(List<T> list, String property, Object propertyValue) {
if (list == null) {
return null;
}
if (list.size() == 0) {
return null;
}
BeanField propertyField = BeanField.getField(list.get(0), property);
if (propertyField == null) {
return null;
}
List<T> result = new ArrayList<T>();
for (T element : list) {
try {
Object v = propertyField.get(element);
if (AppUtil.equals(v, propertyValue)) {
result.add(element);
}
} catch (Exception e) {
//IllegalAccessException
}
}
if (result.size() != 0) {
return result;
}
return null;
}
}