Java集合进阶 | Collection接口
创始人
2024-05-21 12:40:42
0

本专栏主要是记录学习完本专栏主要是记录学习Java中的知识点,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏
JavaWeb:🔥JavaWeb
Java入门篇: 🔥Java基础学习篇
Java进阶学习篇(持续更新中):🔑Java进阶学习篇

在这里插入图片描述

文章目录

  • 一、前言
  • 二、概述
    • 1.List系列集合
    • 2.Set系列集合
  • 三、具体方法
    • 1.添加
    • 2.清空
    • 3.删除
    • 4.判断是否包含
    • 5.判断是否为空
    • 6.集合长度
  • 四、具体实现
  • 五、contains方法注意点
    • 1.实例检验
    • 2.原理
    • 3.解决方法
  • 六、结语

一、前言

从本文开始会讲述集合进阶的相关知识点,本文主要是讲述单列集合的顶层接口Collection
在这里插入图片描述

二、概述

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

1.List系列集合

添加的元素是有序、可重复、有索引

  • 有序:输入的顺序与输出顺序一致

  • 可重复:集合内元素可以相同,不报错

  • 有索引:通过索引获取集合内元素

2.Set系列集合

添加的元素是无序、不重复、无索引

  • 无序:输入的顺序与输出顺序不一致

  • 不重复:集合内元素不可以相同,否则报错

  • 无索引:不可通过索引获取集合内元素

三、具体方法

1.添加

public boolean add(E,e)

2.清空

public void clear

3.删除

public boolean remove(E,e)

4.判断是否包含

这个方法比较特殊,在 底层源码中是依赖equals方法判断 集合中是否存在某一个元素,所以 如果是自定义对象也想用该方法来判断是否包含的话,要在JavaBean中重写equals方法在下文中会具体介绍的

public boolean contains(Object obj)

5.判断是否为空

public boolean isEmpty()

6.集合长度

public int size()

四、具体实现

由于Collection是一个接口,所以我们不能直接创建它的对象,只能创建其实现类的对象(ArrayList)来实现这几个方法,所以在下面的实例中我new了一个ArrayList的对象来演示这些方法

package TestCollection;import java.util.ArrayList;public class demo1 {public static void main(String[] args) {ArrayList list1 = new ArrayList();//添加list1.add("111");list1.add("222");list1.add("333");System.out.println("list1:"+list1);//删除boolean b = list1.remove("111");System.out.println("判断是否成功删除:"+b);System.out.println("list1删除了111元素后的集合:"+list1);//长度int size = list1.size();System.out.println("此时list1的长度是:"+size);//判断是否包含boolean contains = list1.contains("111");System.out.println("list1是否包含元素111:"+contains);//清空list1.clear();System.out.println("清空后的集合:"+list1);//判断是否为空boolean empty = list1.isEmpty();System.out.println("此时list1是否为空:"+empty);}
}

输出结果

list1:[111, 222, 333]
判断是否成功删除:true
list1删除了111元素后的集合:[222, 333]
此时list1的长度是:2
list1是否包含元素111:false
清空后的集合:[]
此时list1是否为空:true

五、contains方法注意点

1.实例检验

这里我们先创建一个Person类,并定义成员属性为agename,再new几个Person类的对象来检验contains方法

在这里插入图片描述
结果是false,与我们设想的不一样

2.原理

如果没有重写equals方法,则默认使用Object类中的equals方法进行判断,而Object类中的equals方法是依赖地址值判断的,所以new了一个对象后地址值改变,方法返回值为false

3.解决方法

在JavaBean中重写equals方法:快捷键Alt+Insert选择equals()和hashCode()一路点击下一步即可一键生成,重写完了再执行以下刚刚的测试类结果就发生了改变

list2:[Person{name = 张三, age = 20}, Person{name = 李四, age = 21}, Person{name = 王五, age = 22}]
list2中是否包含姓名为张三,年龄为20的元素:true

六、结语

接下来会讲述迭代器相关知识,如果对文章内容有疑问可以直接评论留言

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...