对集合按字段去重

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;
		}

}

猜你喜欢

转载自pengbaowei0311.iteye.com/blog/2377398
今日推荐