01集合结构体系

发布时间 2023-10-30 12:58:38作者: ahssmy

:集合体系结构

  • 集合分两大类:
    • Collection:单列集合,一次放入一个数据
    • Map:双列集合,一次放入一对数据

一、集合分两大类

  • Collection:单列集合,每次添加一个数据。
  • Map:双列集合,每次添加一对数据。

二、单列集合

  • 集合体系结构图:

    Collection1

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

    • 有序:存和取的顺序的是一样的。
    • 可重复:表示集合中存取的元素是可以重复的。
    • 有索引:我们可以通过索引去获取集合里面的每一个元素。
  • Set系列集合:添加的元素是:无序、不重复、无索引。

    • 无序:存和取的顺序有可能是不一样的。
    • 不重复:集合中不能存储重复的数据(可以利用这个特性进行数据的去重)。
    • 无索引:指的是我们不能通过集合去获取Set系列里面的元素。

三、Collection

  • Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的。

    方法名称 说明
    public boolean add(E e) 把给定对象添加到当前集合中
    public void clear() 清空集合中所有的元素
    public boolean remove(E e) 把给定的对象在当前集合中删除
    public boolean contains(Object obj) 判断当前集合中是否包含给定的对象
    public boolean isEmpty() 判断当前集合是否为空
    public int size() 返回集合中元素的个数/集合的长度

    案例:

    package com.mycollection;
    import java.util.ArrayList;
    import java.util.Collection;
    
    public class A01_CollectionDemo1 {
        public static void main(String[] args) {
            /*
            public boolean add(E e)             添加
            public void clear()                 清空
            public boolean remove(E e)           删除
            public boolean contains(Object obj) 判断是否包含
            public boolean isEmpty()            判断是否为空
            public int size()                   集合长度
    
    
            注意点:
                collection:是一个接口,我们不能直接创建它的对象。
                所以,现在我们学习它的方法时,只能创建他实现类的对象。
                实现类:ArrayList
             */
    
            //目的:为了学习Collection接口里面的方法
            //自己在做一些练习的时候,还是按照之前的方式去创建对象。
            Collection<String> coll = new ArrayList<>();
            //1.添加元素
            //细节1:如果我们要往List系列集合中添加数据,那么方法永远返回true,因为List系列集合是允许有元素重复的
            //细节2:如果我们要往Set系列集合中添加数据,如果当前要添加元素不存在,方法返回true,表示添加成功。
            //                                  如果当前要添加的元素已存在,方法返回false,表示添加失败。
            //                                  因为Set系列的集合不允许重复。
            coll.add("aaa");
            coll.add("bbb");
            coll.add("ccc");
            System.out.println(coll);
    
            //3.删除
            //细节1:因为collection里面定义的是共性的方法,所以此时不能通过索引进行删除。只能通过元素的对象进行删除。
            //细节2:方法会有一个布尔类型的返回值,删除成功返回true,删除失败返回false。
            //如果要删除的元素不存在,就会删除失败。
            coll.remove("aaa");
            System.out.println(coll);
    
            //4.判断元素是否包含
            //细节:底层是依赖equals方法进行判断是否存在的。
            //所以,如果集合中存储的是自定义对象,也想通过contains方法来判断是否包含,那么在javabean类中,一定要重写equals方法。
            boolean result = coll.contains("bbb");
            System.out.println(result);
    
    
    
    
            //2.清空
            coll.clear();
            System.out.println(coll);
        }
    }
    

    运行结果:

案例二:

package com.mycollection;

import java.util.Objects;

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


    public Student() {
    }

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

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true; //this是当前对象的引用
        if (o == null || getClass() != o.getClass()) return false;//当前对象里面的getClass和o对象里面的getClass
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);//equals方法通常用于比较两个对象的内容是否相同
    }


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

测试类:

package com.mycollection;

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

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

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

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

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

        //5.判断集合是否为空
        boolean result2 = coll.isEmpty();
        System.out.println(result2);

        //6.获取集合的长度
        int size = coll.size();
        System.out.println("集合的长度为:"+size);

    }
}

运行结果: