Java_基础—去除ArrayList中重复自定义对象元素

新建一个Person类,属性为name, age

Alt + Shift +S → C 空参构造
Alt + Shift +S → O 有参构造
Alt + Shift +S → R 生成set和get 方法
Alt + Shift +S → S 生成toString方法

package com.soar.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;
        return this.name.equals(p.name) && this.age == p.age;
    }

}

新建一个ArrayList类

package com.soar.list;

import java.util.ArrayList;
import java.util.Iterator;

import com.soar.bean.Person;

@SuppressWarnings({ "rawtypes", "unchecked","unused" })
public class Demo2_ArrayList {
/*
 *  * A:案例演示
    * 需求:ArrayList去除集合中自定义对象元素的重复值(对象的成员变量值相同)
    * B:注意事项
    * 重写equals()方法
    * contains()判断是否包含,底层依赖的是equals()方法
    * remove()判断是否删除,底层依赖的也是equals()方法
    * 如果不重写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));

        //ArrayList newlist = getSingle(list);
        //System.out.println(newlist);      //[Person [name=张三, age=23], Person [name=李四, age=24]]
        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;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值