Java集合进阶 | Collection接口

news2024/9/21 12:21:59

本专栏主要是记录学习完本专栏主要是记录学习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

六、结语

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/188826.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Three.js入门以及案例(全方位解析)

下载three.js 压缩包 github链接查看所有版本 threejs:https://github.com/mrdoob/three.js/releases 下载即可 常用的文件目录 three.js-文件包 └───build——three.js相关库,可以引入你的.html文件中。│ └───docs——Three.js API文档文件│…

【机器学习算法】模型评估 “神经网络,聚类,向量机,关联规则”算法模型的评估。

模型评估* 数据集的切割 训练-测试数据的方式、交叉验证的方式 我们通常会把数据集切割为训练数据集或者测试数据集,训练数据集用来训练模型用,测试数据集我们一般用来测试模式的实际效能怎么样。 我们在将数据分为训练和测试数据集的时候我们会使用…

go-zero使用consul作为注册中心

目录 在rpc服务中添加配置 导入包: 在rpc服务中添加配置: 引入 Consul config 配置项 user.yml 文件 修改 user.go,将 rpc注册到consul rpc的发现 在api服务中添加配置: 修改api/etc/user.yam 文件 修改 user.yml 修改api/user.go …

@Import的用法

官方定义: https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#spring-core Using the ImportAnnotation Much as the <import/> element is used within Spring XML files to aid in modularizing configurations, the Import annotat…

一文详解ARP报文格式及工作原理

ARP&#xff08;地址解析协议&#xff09;作用&#xff1a;将目的IP解析为目的MAC&#xff0c;用于二层帧结构的目标MAC封装&#xff0c;数据必须封装为帧才能够被网卡发送出去&#xff0c;帧中必须包含MAC。报文格式&#xff1a;ARP报文不能穿越路由器&#xff0c;不能被转发到…

基于飞桨实现钢铁企业废钢判级迈入智能化道路

目前&#xff0c;国家“双碳”战略与“数据智能”环境正驱动着钢铁企业废钢判级迈入智能化道路。针对生产过程中带来高能耗和高污染问题&#xff0c;企业通过使用飞桨用友废钢智能判级系统&#xff0c;助力提升自身经济效益和安全生产水平。 建设背景 目前&#xff0c;国家“双…

如何在IDEA中创建Web项目

&#x1f44c; 棒棒有言&#xff1a;也许我一直照着别人的方向飞&#xff0c;可是这次&#xff0c;我想要用我的方式飞翔一次&#xff01;人生&#xff0c;既要淡&#xff0c;又要有味。凡事不必太在意&#xff0c;一切随缘&#xff0c;缘深多聚聚&#xff0c;缘浅随它去。凡事…

QT入门Buttons之QToolButton

目录 一、界面布局介绍 1、布局器中的位置及使用 2、控件的界面属性 2.1对象名称和大小设置 2.2对象文本设置和鼠标箭头更改 2.3、扁平化样式 二、属性功能介绍 1、显示箭头属性 2、按钮风格 3、添加默认action属性 三、Demo展示 此文为作者原创&#xff0c;转载请标…

Web前端:提高React Native应用程序性能的技巧

不可否认&#xff0c;React Native是开发混合应用的未来。它提供了可扩展性、灵活性、速度、敏捷性、成本效益和卓越的性能。难怪这么多成功的公司依赖React Native来构建他们的应用程序。毕竟&#xff0c;在互联网时代&#xff0c;每个企业都需要一个高性能的应用程序来满足客…

PCB如何进行阻抗设计经验总结

&#x1f3e1;《总目录》 目录1&#xff0c; 什么是阻抗匹配2&#xff0c;为何要阻抗匹配3&#xff0c;阻抗设计经验1&#xff0c; 什么是阻抗匹配 阻抗是指电路中两点间电阻&#xff0c;电感和电容的总称。而阻抗匹配是指&#xff0c;传输线及传输线两端的电子元器件的输入或输…

Canvas(HTML 5 元素)之绘制曲线图形

文章目录参考描述模板圆形圆形半圆形互补弧形arc()arcTo()二次贝塞尔曲线三次贝塞尔曲线参考 项目描述搜索引擎BingCanvas 中文网CanvasRenderingContext2DW3schoolHTML Canvas 参考手册从 0 到 1&#xff1a;HTML 5 Canvas 动画开发莫振杰 描述 项目描述Edge109.0.1518.70 (…

1.Java基础入门

目录 一.java概述 1.1 java语言发展史 1.2 为什么用Java 1.3 Java能做什么 1.4 Java技术体系 二.Java快速入门 2.1 如何使用Java 2.2 JVM&#xff0c;JRE&#xff0c;JDK 2.2.1 JVM 2.2.2 JRE 2.2.3 JDK 2.3 JDK的下载和安装 2.3.1 JDK的下载 2.3.2 JDK的安装 2.3.3 如何验证JD…

git版本回滚详解

写在前面&#xff1a;本文图片中出现的git st, git co分别是git status和git checkout的简写&#xff0c;使用中可以自行设置git config --global alias.st statusgit config --global alias.co checkout查看git配置文件 vim ~/.gitconfig1 工作区内的回滚操作当工作区的文件发…

Android 传感器概述(二)

Android 传感器概述&#xff08;二&#xff09;Android 传感器概述&#xff08;二&#xff09;运动传感器使用重力传感器使用线性加速度计使用旋转矢量传感器使用有效运动传感器使用计步器传感器使用步测器传感器使用原始数据使用加速度计使用陀螺仪使用未经校准的陀螺仪Androi…

【数据结构】动图详解单向链表

目录 1.什么是链表 1.问题引入 2. 链表的概念及结构 3. 问题解决 2.单向链表接口的实现 1.接口1&#xff0c;2---头插&#xff0c;尾插 2. 接口3&#xff0c;4---头删&#xff0c;尾删 3. 接口5---查找 4. 接口6&#xff0c;7---插入&#xff0c;删除 5. 接口8---打印 6. 注意…

CVE-2021-36934提权复现

CVE-2021-369342021年7 月 20 日&#xff0c;微软确认了一个新的本地提权漏洞(CVE-2021-36934)&#xff0c;被称为HiveNightmare。该漏洞由于Windows中多个系统文件的访问控制表(ACL)过于宽松&#xff0c;使得任何标准用户都可以从系统卷影副本中读取包括SAM、SYSETM、SECURITY…

Windows系统运行iOS设备管理软件iMazing2023

iMazing2023免费版是一款运行在Windows系统上的iOS设备管理软件&#xff0c;软件功能非常强大&#xff0c;界面简洁清晰&#xff0c;操作方便快捷&#xff0c;设计的非常有人性化&#xff0c;iMazing官方版为用户提供了多种设备管理功能&#xff0c;每一位用户都能以自己的形式…

MyISAM和InnoDB存储引擎的区别

目录前言存储引擎区别事务外键表单的存储数据查询效率数据更新效率如何选择前言 MyISAM和InnoDB是使用MySQL最常用的两种存储引擎&#xff0c;在5.5版本之前默认采用MyISAM存储引擎&#xff0c;从5.5开始采用InnoDB存储引擎。 存储引擎 存储引擎是&#xff1a;数据库管理系统…

小白如何快速入门Verilog HDL ?一文为你讲解清楚

在学习的过程中&#xff0c;无论学什么都不可能一蹴而就。都是从一个初步认识到慢慢了解再到精通掌握的过程&#xff0c;学习Verilog HDL语法也是一样的道理&#xff0c;首先你要清楚什么是Verilog HDL&#xff0c;然后结合实践再遵从理论&#xff0c;这样后面的学习才能理解的…

P1359 租用游艇

# 租用游艇 ## 题目描述 长江游艇俱乐部在长江上设置了 $n$ 个游艇出租站 $1,2,\cdots,n$。游客可在这些游艇出租站租用游艇&#xff0c;并在下游的任何一个游艇出租站归还游艇。游艇出租站 $i$ 到游艇出租站 $j$ 之间的租金为 $r(i,j)$&#xff08;$1\le i\lt j\le n$&#xf…