集合-01

本文介绍了Java集合框架中的Collection接口及其子接口List,详细讲解了数组和集合的区别,包括集合的可变长度、仅存储引用数据类型等特点。内容涵盖集合类体系结构、常用方法如add、removeIf、迭代器遍历和增强for循环的使用。此外,还探讨了List集合的特点,如有序性、可重复性以及特有的方法。最后,简述了数据结构中的栈和队列以及数组和链表的概念。
摘要由CSDN通过智能技术生成

1.Collection集合

我们现在先来思考一个问题:如果我现在想同时存储多个元素,我们该如何?那我们用之前学习过的知识点,我们是不是知道数组可以干这件事情,集合是不是也同样的可以干这件事情啊,我们学习一下数组和集合的区别:我们定义一个长度为3的数组,那么现在我有4个元素要往里面存,前3个元素没有任何问题,第四个元素是不是就尴尬了呀,那为什么第四个元素会尴尬呀,其实就是数组的特点导致的,因为数组的长度是不可变的,那我换成集合,我这里还是换成长度为3的集合,还是要来存储4个元素,前面3个元素还是没有任何问题,那此时集合看到了,还有第四个元素没有进来呀,那么它就会自动的扩容,那么集合的这个长度就会自动的从3扩容到4,那么这个自动扩容的代码不需要我们自己去写,我们只需写将元素添加到集合的代码就可以了,所以这也是集合最大的特点,长度可变

那除此之外呢,集合和数组啊,在存储元素的时候还有第二个特点,我们在idea中来演示一下这个特点:我们分别用数组和集合来存储一些元素,存储基本数据类型和引用数据类型,

 

 

我们可以通过上述这个代码可以得出一个结论:数组可以存基本数据类型和引用数据类型  

 

 

 

我们可以通过上述这个代码可以得出一个结论:集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类

也就是我们集合中的泛型里不能写int,要写也只能写int类型的包装类integer

 

 

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

  • 相同点

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

  • 不同点

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

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

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

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

在java中,集合是有很多分类的,我们看一下体系结构,如果我们一次要来存一个元素,比如说张三一个元素,李四一个元素,王五一个元素,那么我们要使用的就是单列集合,单列集合它的顶层接口是collection,如果我一次要存一对元素,比如说张三和北京,这是不是一对呀,还有李四和上海,王五和南京,那么我们要使用的就是双列集合,双列集合的顶层接口是map,单列和双列是集合中的两大派系,我们先来学习单列,假设我现在要存的元素变了,我现在要存张三,李四,张三,那你会发现这3个元素当中是不是存在重复元素了呀,好,如果说你想保留重复元素,那么请使用list集合,list集合它是允许可以重复的,如果你不想保留重复元素,我们存张三,李四,张三,那么实际上到集合的时候呢,只剩下张三和李四了,那此时你就得使用set集合,set集合的特点是不允许出现重复元素的,那么list和set他们两都是接口,我们平时所说的list集合和set集合那么实际上都是指的他们的实现类,实际上我们在创建对象的时候也是他们的实现类,那么list接口的实现类有ArrayList和linkedlist,set接口的实现类他有hashset和treeset,双列集合map接口它有两个实现类需要我们学习,hashmap和treemap,以上就是关于我们集合的体系结构

 

 

学习完集合的体系结构之后,我们知道集合分为两个派系,一次只存一个元素的是单列集合,一次存一对儿元素的是双列集合,我们先来学第一个派系,单列集合,学习单列集合就需要从collection接口入手,那么关于collection我们要知道第一个它是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素,第二个JDK 不提供此接口的任何直接实现.它提供更具体的子接口(如Set和List)实现,那我们在创建Collection集合的对象的时候,我们要注意,首先我们要用多态的方式,因为collection它是接口,那实现类我们就要用ArrayList,对象创建完毕,我们就要用里面的方法,在collection当中,下面这些方法都是我们常用的,  

 

第一个add添加元素的方法:

 

 

第二个remove方法,移除指定元素,这个方法有返回值,boolean类型,如果删除成功了则返回true,如果不成功则返回false,

注意:我们这里有一个小技巧就是Ctrl+alt+F,可以将我们勾选中的代码抽取成一个方法,我们只需要给这个方法起个名字就行了

 

 

第三个方法removeif,根据条件进行删除,那么这是什么意思呢?其实我们可以将条件以lamda表达式的形式传递到这个参数当中,满足条件就删除,不满足条件则不删除,那么有同学就有疑问了,你怎么知道lamda表达式就是这么写的呢?我们看到源码抽象方法里的参数,代表集合中数据的类型,我们现在是字符串的类型,所以底层抽象方法中的参数就是string类型的,那我们在写lamda表达式的时候,小括号里面的内容一定要和抽象方法里的形参一致,那么我们大括号的结果要和我们的抽象方法的返回值保持一致,这个就是关于我们lamda表达式在这里书写的一个格式,所以就是简单来说,我们removeif方法的底层就是负责遍历,遍历的时候,得到每一个元素,然后把每一个元素都传递给这个lamda表达式,其中的s就表示每一个元素,然后每一个元素去做我们lamda表达式里这样一个判断就可以了,为true就删除,为false就不删

 

 

 

第四个clear方法,清空集合,顾名思义是不是把集合里所有的元素都干掉呀

 

 

第五个方法,contains方法,判断集合中是否存在指定的元素  

 

 

第六个方法, isEmpty()方法, 判断集合是否为空

 

 

第七个方法, size()方法 集合的长度,也就是集合中元素的个数,

 

 

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

  • 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() 集合的长度,也就是集合中元素的个数
    ​
    ​
    collection.removeIf(
            (String s)->{
                return s.length()==3;
            }
    );
    System.out.println(collection);

    1.removeif 底层会遍历集合,得到集合中的每

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值