package cn.cp; //ArrayList和Iterator的初步使用(二) //要求:不要让ArrayList保存相同的元素(它本来是可以保存重复元素的) //方法:重写equals()方法 //注意: //(1)contains()方法的使用 //(2)在第一处定义Iterator iterator=arrList2.iterator()是错误的。导致后面的while()错误 //因为此时的容器里面还没有东西,这时候它的迭代器是拿不到对象的。而在往容器里面添加元素后 //再获取Iterator,这个迭代器才可以进行迭代 import java.util.ArrayList; import java.util.Iterator; class Student { private int age; private String name; public Student(int age, String name) { super(); this.age = age; this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public boolean equals(Object obj) {// 重写equals方法 Student st = (Student) obj; if (st.age == this.age && st.name == this.name) { return true; } else { return false; } } } public class ArrayListTest2 { public static void main(String[] args) { ArrayListTest2 arrayListTest2 = new ArrayListTest2(); ArrayList arrList2 = new ArrayList(); // Iterator iterator=arrList2.iterator();//第一处.在此定义是不可以的。while()时出错 Student student1 = new Student(11, "mmha"); Student student3 = new Student(13, "haha"); Student student4 = new Student(13, "haha");//无法添加此重复元素 arrayListTest2.addObj(arrList2, student1); arrayListTest2.addObj(arrList2, student3); arrayListTest2.addObj(arrList2, student4); Iterator iterator = arrList2.iterator();//第二处. while (iterator.hasNext()) { Student stu = (Student) iterator.next(); System.out.println("学生的姓名是:" + stu.getName()); } } public void addObj(ArrayList arrayList, Student s) { if (arrayList.contains(s)) { System.out.println(s.getName() + "已存在"); } if (!arrayList.contains(s)) { arrayList.add(s); } } }