依据List中单个对象的某方法进行去重
根据List中单个对象的某方法进行去重
public static void main(String[] args){ List<TQxtjEntity> list = new ArrayList<TQxtjEntity>(); TQxtjEntity t1 = new TQxtjEntity("n1","1"); TQxtjEntity t2 = new TQxtjEntity("n2","2"); TQxtjEntity t3 = new TQxtjEntity("n2","2"); TQxtjEntity t4 = new TQxtjEntity("n3","2"); TQxtjEntity t5 = new TQxtjEntity("n1","3"); TQxtjEntity t6 = new TQxtjEntity("n1","3"); list.add(t1); list.add(t2); list.add(t3); list.add(t4); list.add(t5); list.add(t6); List<TQxtjEntity> li = removeRepeat(list,"com.kingtopinfo.qxgl.entity.TQxtjEntity","getName"); System.out.println(li.size()); } /** * 根据oldList中单个对象的某方法进行去重 * @param oldList * @param className * @param methodName * @return */ private static <T> List<T> removeRepeat(List<T> oldList,String classALLName,String methodName){ try { //①找到类: Class cl = Class.forName(classALLName); //②创建对象(要求这个类中含有空参数的构造方法): Object obj = cl.newInstance(); //③根据名称和参数找方法: Method method1 = cl.getMethod(methodName); //④在某个对象上面执行方法, //Object result = method1.invoke(obj); List<T> newList = new ArrayList<T>(); for(int i=0; i<oldList.size(); i++) { boolean tf = false; for(int j=0; j<newList.size(); j++){ if(method1.invoke(newList.get(j)).equals(method1.invoke(oldList.get(i)))){ tf = true; break; } } if(!tf){ newList.add(oldList.get(i)); } } return newList; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }
版权声明:本文为博主原创文章,未经博主允许不得转载。