A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package com.heima.list;
import java.util.ArrayList;
import java.util.Iterator;
import com.heima.bean.Person;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class Demo2_ArrayList {
        /**
         * * A:案例演示
                        * 需求:ArrayList去除集合中自定义对象元素的重复值(对象的成员变量值相同,即同姓名同年龄)
                * B:注意事项
                        * 重写equals()方法的
                contains方法判断是否包含,底层依赖的是equals方法
                remove方法判断是否删除,底层依赖的是equals方法
         */
        public static void main(String[] args) {
                ArrayList list = new ArrayList();                                //创建集合对象
                list.add(new Person("张三", 23));
                list.add(new Person("张三", 23));
                list.add(new Person("李四", 24));
                list.add(new Person("李四", 24));
                list.add(new Person("李四", 24));
                list.add(new Person("李四", 24));
               
                //ArrayList newList = getSingle(list);                        //调用方法去除重复
                //System.out.println(newList);
                list.remove(new Person("张三", 23));
                System.out.println(list);
        }
        /*
         * 创建新集合将重复元素去掉
         * 1,明确返回值类型,返回ArrayList
         * 2,明确参数列表ArrayList
         *
         * 分析:
         * 1,创建新集合
         * 2,根据传入的集合(老集合)获取迭代器
         * 3,遍历老集合
         * 4,通过新集合判断是否包含老集合中的元素,如果包含就不添加,如果不包含就添加
         */
        public static ArrayList getSingle(ArrayList list) {
                ArrayList newList = new ArrayList<>();                                        //1,创建新集合
                Iterator it = list.iterator();                                                        //2,根据传入的集合(老集合)获取迭代器
               
        while(it.hasNext()) {                                                                        //3,遍历老集合
                        Object obj = it.next();                                                                //记录住每一个元素
                        if(!newList.contains(obj)) {                                                //如果新集合中不包含老集合中的元素
                                newList.add(obj);                                                                //将该元素添加
                        }
                }
               
                return newList;
        }
}

实体类:
package com.heima.bean;

public class Person {
        private String name;
        private int age;
        public Person() {
                super();
               
        }
        public Person(String name, int age) {
                super();
                this.name = name;
                this.age = age;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public int getAge() {
                return age;
        }
        public void setAge(int age) {
                this.age = age;
        }
        @Override
        public String toString() {
                return "Person [name=" + name + ", age=" + age + "]";
        }
        /*@Override
        public boolean equals(Object obj) {
                Person p = (Person)obj;
                System.out.println("equals 方法被调用了,证明contains方法底层调用的是equals");
                return this.name.equals(p.name) && this.age == p.age;
        }*/
       
}



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马