阿里Java学习路线:阶段 1:Java语言基础-Java语言高级特性:第29章:List集合:课时127:ArrayList保存自定义类对象

通过之前的分析已经清楚了ArrayList子类的实现原理以及List核心操作,但是在测试的时候使用的是系统提供的String类,这是一个设计非常完善的类,而对于类集而言也可以实现自定义类对象的保存。

范例:实现自定义类对象保存

package cn.mldn.demo;
import java.util.ArrayList;
import java.util.List;
public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {
        List<Person> all = new ArrayList<Person>();
        all.add(new Person("张三", 30));
        all.add(new Person("李四", 16));
        all.add(new Person("小强", 78));
        System.out.println(all.contains(new Person("小强", 78)));
        all.remove(new Person("小强", 78));
        all.forEach(System.out::println);    //方法引用代替了消费型的接口
        /**
         * false
         * 姓名:张三、年龄:30
         * 姓名:李四、年龄:28
         * 姓名:小强、年龄:78
         */
    }
}
class Person {
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    // setter、getter、构造略
    public String toString() {
        return "姓名:" + this.name + "、年龄:" + this.age;
    }
}

在使用List保存自定义对象时,如果需要使用到contains()、remove()方法进行查询或删除处理时一定要保证类中已经覆写了equals()方法。

package cn.mldn.demo;
import java.util.ArrayList;
import java.util.List;
public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {
        List<Person> all = new ArrayList<Person>();
        all.add(new Person("张三", 30));
        all.add(new Person("李四", 16));
        all.add(new Person("小强", 78));
        System.out.println(all.contains(new Person("小强", 78)));
        all.remove(new Person("小强", 78));
        all.forEach(System.out::println);    //方法引用代替了消费型的接口
        /**
         * false
         * 姓名:张三、年龄:30
         * 姓名:李四、年龄:28
         * 姓名:小强、年龄:78
         */
    }
}
class Person {
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (!(obj instanceof Person)) {
            return false;
        }
        Person per = (Person) obj;
        return this.name.equals(per.name) && this.age == per.age;
    }
    // setter、getter、构造略
    public String toString() {
        return "姓名:" + this.name + "、年龄:" + this.age;
    }
}
/**
* true
* 姓名:张三、年龄:30
* 姓名:李四、年龄:28
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值