中间去重的循环有问题,我要的结果是只有一条数据。在线等代码

public static void main(String[] args) {
    List<Student> list = new ArrayList<Student>();

    for (int i = 0; i < 9; i++) {

        Student student = new Student();
        student.setAge("1");
        student.setId("1");
        student.setName("t");

        list.add(student);

    }
    System.out.println(list.size());
    for (int i = 0; i < list.size(); i++) {
        for (int j = i + 1 ; j < list.size(); j++) {
            if (list.get(i).getAge().equals(list.get(j).getAge())) {
                System.out.println("remove"+j);
                list.remove(j);
            }
        }
    }

// for (int i = 0 ; i < list.size(); i++) {
// System.out.println(list.get(i).getAge() + "-" + list.get(i).getName() + "-" + list.get(i).getId());
// }
}
}

 for (int j = i + 1 ; j < list.size(); j++)
->
for (int j =list.size() - 1; j >= i + 1; j--)

否则你删除了list,你的list下标就变掉了。

从效率的角度来说,两重循环也不好,可以用hashmap把所有的数据按照age装入,然后自然就去重了。

hashset不是去重复的嘛

一边循环一边remove亏你想的出来

List list = new ArrayList();

for (int i = 0; i < 9; i++) {

    Student student = new Student();
    student.setAge("1");
    student.setId("1");
    student.setName("t");

    list.add(student);

}
System.out.println(list.size());

    HashSet h = new HashSet(list);
    list.clear();
    list.addAll(h);
    System.out.println(list.size());

不用那么麻烦,把对象放到TreeMap就可以了;
给你推荐个专业的java视频教学网站,免费的哦,去看看java从入门到精通的视频吧,也许对你很大的帮助:http://www.chuanke.com/s6579460.html