Java 集合操作方法

文章介绍了Java集合框架中的List和Set系列集合,List有序、可重复、有索引,而Set无序、不重复、无索引。在操作集合时,添加元素到List总是返回true,Set则考虑元素是否已存在。删除元素时,Collection接口的方法不依赖索引,而是通过对象进行删除。同时,文章强调了在使用contains方法判断自定义对象是否存在时,需要在对象类中重写equals方法,以满足特定的比较逻辑。
摘要由CSDN通过智能技术生成

集合的体系结构

在这里插入图片描述

List系列集合:添加的元素是有序、可重复、有索引
Set系列集合:添加的元素是无序、不重复、无索引

操作集合的方法

在这里插入图片描述

package com.mycollection;

import java.util.ArrayList;
import java.util.Collection;

public class A01_CollectionDemo01 {
    public static void main (String[] args) {

        Collection<String> coll = new ArrayList<> ();

        coll.add ("aaa");
        coll.add ("bbb");
        coll.add ("ccc");


        coll.remove ("aaa");

        coll.contains ("aaa");
        coll.contains ("bbb");

        System.out.println (coll.isEmpty ());

        coll.size ();

        coll.clear ();

        coll.size ();
    }
}

注意点:

collection是一个接口,我们不能直接创建他的对象。
所以,现在我们学习他的方法时,只能创建他实现类的对象。实现类: ArrayList
目的:为了学习Collection接口里面的方法

1.添加元素

细节1:如果我们要往List系列集合中添加数据,那么方法永远返回true,
	因为List系列的是允许元素重复的。
细节2:如果我们要往Set系列集合中添加数搪如果当前要添加元素不存在,方法返回true,表示添加成功。
如果当前要添加的元素已经存在,方法返回false,表示添加失败。
	因为Set系列的集合不允许重复。

3.删除

细节1:因为Collection里面定义的是共性的方法,所以此时不能通过索引进行删除。
	只能通过元素的对象进行删除。
细节2:方法会有一个布尔类型的返回值,删除成功返回true,删除失败返回false
	如果要删除的元素不存在,就会删除失败。

4.判断元素是否包含

细节:底层是依赖equals方法进行判断是否存在的。
所以,如果集合中存储的是自定义对象,也想通过contains方j法来判断是否包含
那么在javabean类中,一定要重写equals方法。

因为contains方法在底层依赖equals方法判断是否一致
        如果存在自定义的对象,没有重写equals 方法,那么默认使用Object类中的equals方法,而Object类中的equals方法,依赖地址值进行判断
需求:如果同名同年龄,我们认为是同一个学生
        所以需要在自定义的Javabean类中,重写equals方法
package com.mycollection;

import java.util.ArrayList;
import java.util.Collection;

public class A02_CollectionDemo02 {
    public static void main (String[] args) {
        //1. 创建集合对象
        Collection<Student> coll = new ArrayList<> ();

        //2. 创建三个学生对象
        Student s1 = new Student ("zhangsan",23);
        Student s2 = new Student ("lisi",23);
        Student s3 = new Student ("wangwu",23);

        //3. 把学生对象添加到集合当中
        coll.add (s1);
        coll.add (s2);
        coll.add (s3);

        //4. 判断某一个学生对象是否包含
        Student s4 = new Student ("zhangsan",23);
        /*如果同名同年龄,我们认为是同一个学生
        因为contains方法在底层依赖equals方法判断是否一致
        如果存在自定义的对象,没有重写equals 方法,那么默认使用Object类中的equals方法,而Object类中的equals方法,依赖地址值进行判断
        需求:如果同名同年龄,我们认为是同一个学生
        所以需要在自定义的Javabean类中,重写equals方法
        */
        System.out.println (coll.contains (s4));

    }
}

package com.mycollection;

import java.util.Objects;

public class Student {
    private String name;
    private int age;

    public Student (String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Student () {
    }

    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 boolean equals (Object o) {
        if (this == o) return true;
        if (o == null || getClass () != o.getClass ()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals (name, student.name);
    }


    @Override
    public String toString () {
        return "Student{" + "name='" + name + '\'' + ", age=" + age + '}';
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只理智汪

你的鼓励就是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值