package org.ilp.utils;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
/**
*
* @ClassName: CollectUtil
* @Description: TODO(集合处理工具类)
* @author 彭保卫
* @date 2017年6月1日 下午5:19:34
*
*/
public class CollectUtil {
/**
*
* @Title: getNewData
* @Description: TODO(按字段去重)
* @param @param results 原有集合
* @param @param fields 去重字段
* @param @return 设定文件
* @return List<?> 去重后的结果集
* @throws
* @author 彭保卫
*/
public static List<?> getNewData(List<?> results,String... fields) {
List<Object> list = new ArrayList<> ();
Hashtable<String, Integer> mapper = new Hashtable<String, Integer>();
for (Object object : results) {
try {
Class<?> clazz = Class.forName(object.getClass().getName());
StringBuffer key=new StringBuffer();
for (String fieldName : fields) {
String methodName="get"+fieldName.substring(0, 1).toUpperCase()+fieldName.substring(1, fieldName.length());
Method declaredMethod = clazz.getDeclaredMethod(methodName);
String invoke =(String) declaredMethod.invoke(object);
key.append(invoke);
}
String keyValue=key.toString();
Integer integer = mapper.get(keyValue);
if(integer==null){
list.add(object);
int index = list.indexOf(object);
mapper.put(keyValue, index);
}else{
int intValue = integer.intValue();
list.remove(intValue);
list.add(intValue, object);
}
} catch (Exception e) {
e.printStackTrace();
}
}
return list;
}
}