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;
}
根据List中单个对象的某方法进行去重
最新推荐文章于 2024-02-26 15:18:46 发布