- /**
- * 题目:判断含有人(具有姓名,年龄属性)的ArrayList是否有重复元素。
- * 思路:对人进行描述,定义容器,取出。
- * 总结:List集合判断元素是否相同,依据的是元素的equals方法。
- *@author XiaLei
- */
- public class Day14Test7 {
- public static void main(String[] args) {
- Person p1 = new Person("zhan01",2);
- Person p2 = new Person("zhan02",2);
- Person p3 = new Person("zhan01",3);
- Person p4 = new Person("zhan01",2);
- ArrayList<Person> al = new ArrayList<Person>();
- al.add(p1);
- al.add(p2);
- al.add(p3);
- al.add(p4);
- System.out.println(beDefferent(al));
-
- }
- public static <Object> ArrayList beDefferent(ArrayList<Object> al){
- ArrayList alt = new ArrayList();
- ListIterator li = al.listIterator();
- while(li.hasNext()){//迭代循环中,next一次就要判断一次hasNext。
- Object obj = (Object) li.next();
- if(!alt.contains(obj)){//contains底层调用equals方法。另外remove方法也是调用equals的。
- alt.add(obj);
- }
- }
- return alt;
- }
- }
- class Person{
- private String name;
- private int age;
- public Person(String name, int age) {
- super();
- this.name = name;
- this.age = age;
- }
- public boolean equals(Object obj){
- //复写equals方法。
- if(!(obj instanceof Person))
- return false;
- Person p =(Person)obj;
- return this.name.equals(p.name) &&this.age == p.age;
- }
- public String toString(){
- return "name="+this.name+" age="+this.age;
- }
- }
复制代码 |
|