public class Test {
public static void main(String[] args) throws Exception{
List<Student> list = new ArrayList<Student>();
Student stu1 = new Student("1", "zhangsan");
Student stu2 = new Student("2", "lisi");
Student stu3 = new Student("3", "zhangsan");
Student stu4 = new Student("3", "zhangsan");
Student stu5 = new Student("3", "zhangsan");
Student stu6 = new Student("4", "wangwu");
list.add(stu1);
list.add(stu2);
list.add(stu3);
list.add(stu4);
list.add(stu5);
list.add(stu6);
List<Student> result = Test.removeSame(list,Student.class,"name");
System.out.println(result);
}
/**
* list去重
* @param list list集合
* @param clazz list泛型类
* @param name 去重的字段属性
* @return 去重后的list
* @throws Exception
*/
public static <T> List<T> removeSame(List<T> list,Class<?> clazz,String name) throws Exception{
Field field = clazz.getDeclaredField(name);
field.setAccessible(true);
int num = list.size();
List<T> result = new ArrayList<T>(num);
result.addAll(list);
for (int i = 0; i < num - 1; i++) {
for (int j = num - 1; j > i; j--) {
if (field.get(list.get(j)) == field.get(list.get(i))) {
result.remove(list.get(i));
}
}
}
return result;
}
}
class Student {
private String id;
private String name;
public Student(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
}
}