单例集合顶层接口Collection

单列集合顶层接口Collection

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

有序:存和取的元素顺序一致

可重复:存储的元素可以重复

有索引:可通过索引操作元素

Set系列集合:添加的元素是无序,不重复,无索引

  • 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() 返回集合中元素的个数/集合的长度

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

public class Demo1 {
    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是一个接口,无法直接创建他的对象
        //所以在学习使用他的方法的时候,只能创建他的实现类的对象
        Collection<String> coll=new ArrayList<>();

        //1.添加
        //细节:
        //1.如果我们要往List系列集合添加数据,那么方法永远返回true,因为List系列是允许元素重复的
        //2.如果我们要往Set系列集合添加数据,被添加的不存在返回true,存在则无法添加返回false,因为Set系列是不允许元素重复的
        coll.add("aaa");
        System.out.println(coll);

        //2.清空
//        coll.clear();
//        System.out.println(coll);

        //3.删除
        //注意:因为Collection里面定义的是共性的方法,所以此时不能通过索引进行删除,只能通过元素的对象进行删除
        //方法有一个返回值,删除成功返回true,失败返回false
//        System.out.println(coll.remove("aaa"));

        //4.判断元素是否存在
        //底层是equals方法惊醒判断是否存在的
        //所以,如果集合中储存的是自定义对象,也想通过contains方法来判断是否包含,你们在JavaBean类中,要重写equals方法
        System.out.println(coll.contains("aaa"));

        //创建一个集合的对象
        Collection<Student> coll2=new ArrayList<>();
        //创建三个学生的对象
        Student s1=new Student("zhangsan",23);
        Student s2=new Student("li",24);
        Student s3=new Student("wangwu",25);
        coll2.add(s1);
        coll2.add(s2);
        coll2.add(s3);

        //判断集合中某一个学生对象是否包含
        Student s4=new Student("zhangsan",23);
        //如果姓名和年龄一样,我们就认为是同一个人
        System.out.println(coll2.contains(s4));//false
        //因为contains方法在底层依赖equals方法判断对象是否一直
        //如果存的是自定义对象,没有重写equals方法,那么默认使用的是Object中的equals方法,比较的就是地址值
        //重写equals方法后
        //System.out.println(coll2.contains(s4));//true
    }
}
import java.util.Objects;

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

    public Student() {
    }

    @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);
    }
    
    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;
    }

    public String toString() {
        return "Student{name = " + name + ", age = " + age + "}";
    }
}
posted @ 2022-11-09 20:21  喜欢七岁就很浪  阅读(26)  评论(0编辑  收藏  举报