根据List中单个对象的某方法进行去重

来源:互联网 发布:杭州 餐厅 知乎 编辑:程序博客网 时间:2024/05/03 17:43
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 blocke.printStackTrace();}return null;}


0 0
原创粉丝点击