java基础入门-13-【集合(List集合)】

本文介绍了Java中的List集合,包括与数组的区别、集合类体系、Collection接口的使用、遍历方式(迭代器、增强for循环、Lambda表达式),以及List集合的特点和遍历对比。此外,还探讨了数据结构中的栈、队列、数组和链表,以及ArrayList和LinkedList的底层实现和特性。
摘要由CSDN通过智能技术生成

22、集合(List集合)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.Collection集合

1.1 数组和集合的区别【理解】

  • 相同点

    都是容器,可以存储多个数据

  • 不同点

    • 数组的长度是不可变的,集合的长度是可变的

    • 数组可以存基本数据类型和引用数据类型

      集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类

1.2 集合类体系结构【理解】

在这里插入图片描述

1.3 Collection 集合概述和使用【应用】

在这里插入图片描述

Collection集合概述
  • 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素

  • JDK 不提供此接口的任何直接实现.它提供更具体的子接口(如Set和List)实现

  • 创建Collection集合的对象

    • 多态的方式
    • 具体的实现类ArrayList
Collection集合常用方法
方法名 说明
boolean add(E e) 添加元素
boolean remove(Object o) 从集合中移除指定的元素
boolean removeIf(Object o) 根据条件进行移除
void clear() 清空集合中的元素
boolean contains(Object o) 判断集合中是否存在指定的元素
boolean isEmpty() 判断集合是否为空
int size() 集合的长度,也就是集合中元素的个数
代码书写
import java.util.ArrayList;
import java.util.Collection;

public class 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> collection = new ArrayList<>();

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

        System.out.println("collection = " + collection);//collection = [aaa, bbb, ccc, ccc]

        //2.清空
        //collection.clear();
        //System.out.println("collection = " + collection);//collection = []

        //3.删除
        //注意1:因为collection里面定义的是共性的方法,所以此时不能通过索引进行删除。只能通过元素的对象进行删除。
        //注意2:方法会有一个布尔类型的返回值,删除成功返回true,删除失败返回false
        //如果要删除的元素不存在,就会删除失败。
        collection.remove("ccc");
        collection.remove("aaa");
        System.out.println(collection.remove("xxx"));//false
        System.out.println("collection = " + collection);//collection = [bbb, ccc]

        //4.判断元素是否包含
        //细节:底层是依赖equals方法进行判断是否存在的。
        //所以,如果集合中存储的是自定义对象,也想通过contains方法来判断是否包含,那么在javabean类中,一定要重写equals方法。
        boolean result = collection.contains("bbb");
        System.out.println("result = " + result);//result = true
        System.out.println(collection.contains("aaa"));//false

        //5.判断集合是否为空
        boolean result2 = collection.isEmpty();
        System.out.println("collection = " + collection);//collection = [bbb, ccc]
        System.out.println(result2);//false


        //6.获取集合的长度
        collection.add("ddd");
        collection.add("ddd");
        System.out.println("collection = " + collection);//collection = [bbb, ccc, ddd, ddd]
        int size = collection.size();
        System.out.println(size);//4
    }
}
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;
    }

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

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



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

        //2.创建三个学生对象
        Student s1 = new Student("zhangsan", 23);
        Student s2 = new Student("lisi", 24);
        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类中的equals方法,依赖地址值进行判断。
        //需求:如果认为同姓名和同年龄,就认为是同一个学生
        //所以,需要自定义的Javabean类中,重写equals方法就可以了。
        System.out.println(coll.contains(s4));//false
    }
}

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

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

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





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

public class CollectionDemo2 {
   
    public static void main(String
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

良辰美景好时光

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值