Java高级Day18-集合

news2024/9/22 2:06:37

62.集合

之前保存多个数据元素使用数组,但数组有以下缺点:

  1. 长度开始必须指定,指定后不可修改

  2. 保存的必须为同一类型的元素

  3. 使用数组进行增加/删除元素的代码比较麻烦

集合

  1. 可以动态的保存任意多个对象

  2. 提供了一系列方便操作对象的方法

  3. 使用集合添加,删除新元素代码简洁明了

集合的框架体系

单列集合

双列集合

  1. 集合主要是两组(单列集合,双列集合)

  2. Collection 接口有两个重要的子接口 List Set ,他们的实现子类都是单列集合

  3. Map 接口的实现子类 是双列集合,存放的是 K-V (haspMap.put("NO1","北京"))

62.Collection方法

//1,add:添加单个元素
list.add("jack");
//2.remove:删除指定元素
list.remove(0);//删除第一个元素   
list.remove("jack"); //删除指定元素
//3.contains:查找元素是否存在
System.out.println(list.contains("jack"));
//4.size:获取元素个数
System.out.println(list.size());
//5.isEmpty:判断是否为空
System.out.println(list.isEmpty());
//6.clear:清空
list.clear();
//7.addAll:添加多个元素
list.addAll(list2);
//8.containsAll:查找多个元素是否都存在
System.out.println(list.containsAll(list2));
//9.removeAll:删除多个元素
list.removeAll(list2);

63.Collection接口遍历元素方式

方式1:使用Iterator迭代器

  1. Iterator对象称为迭代器,主要用于遍历Collection集合中的元素

  2. 所有实现了Collection接口的集合类都有一个iterator()f昂发,用以返回一个实现了Iterator接口的对象,即可以返回一个迭代器

  3. Iterator的结构

  4. Iterator仅用于遍历集合,Iterator本身并不存放对象

注意:在调用iterator.next()方法之前必须要调用iterator.hasNext()方法进行检测。若不调用,且下一条记录无效,直接调用iterator会抛出N哦SuchElementException异常

//迭代器演示案例
public class HelloJava {
    public static void main(String[] args) {
        Collection col = new ArrayList();
        col.add(new Book("三国演义","罗贯中",10.1));
        col.add(new Book("小李飞刀","古龙",5.1));
        col.add(new Book("红楼梦","曹雪芹",34.6));
​
        //遍历col集合
        //1.先得到集合col对应的迭代器
        Iterator iterator = col.iterator();
        //2.使用while循环遍历
        while (iterator.hasNext()) {//判断是否还有元素
            //返回下一个元素,类型是Object
            Object obj = iterator.next();
            System.out.println("obj=" + obj);
        }
        //快捷键生成while => itit
        //显示所有的快捷键的快捷键 ctrl + j
​
        //3,当退出while循环后,这时iterator迭代器,指向最后的元素
        //iterator.next();  //NoSuchElementException
        //4.如果希望再次遍历,需要重置迭代器
        iterator = col.iterator();
        System.out.println("=====第二次遍历=====");
        while (iterator.hasNext()) {
            Object obj =  iterator.next();
            System.out.println("obj=" + obj);
        }
    }
    
}
class Book{
    private String name;
    private String author;
    private double price;
​
    public Book(String name, String author, double price) {
        this.name = name;
        this.author = author;
        this.price = price;
    }
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    public String getAuthor() {
        return author;
    }
​
    public void setAuthor(String author) {
        this.author = author;
    }
​
    public double getPrice() {
        return price;
    }
​
    public void setPrice(double price) {
        this.price = price;
    }
​
    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                '}';
    }
}

方式2:增强for循环

增强for就是简化版的iterator,本质一样,只能用于遍历集合或数组

public class HelloJava {
    @SuppressWarnings({"all"})
    public static void main(String[] args) {
        Collection col = new ArrayList();
        col.add(new Book("三国演义","罗贯中",10.1));
        col.add(new Book("小李飞刀","古龙",5.1));
        col.add(new Book("红楼梦","曹雪芹",34.6));
​
        //1.使用增强for,在Collection集合
        //2.增强for,本质仍然是迭代器
        //3.增强for可以理解成简化版本的迭代器
        //4.快捷方式 I
        for (Object book : col){
            System.out.println("book=" + book);
        }
        //增强for,也可以直接在数组使用
    }
}

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

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

相关文章

基于IDEA+Mysql+SpringBoot开发的健康运动系统

基于IDEAMysqlSpringBoot开发的健康运动系统 项目介绍💁🏻 http://localhost:8088/login.html 账号密码 xpf 123 在当前快节奏的社会生活中,随着人们健康意识的不断提升,个人健康管理已成为社会关注的焦点。随着科技的飞速发展&am…

反爬虫限制:有哪些方法可以保护网络爬虫不被限制?

目前,爬虫已经成为互联网数据获取最主流的方式。但为了保证爬虫顺利采集数据,需要防范网站的反爬虫机制,降低IP被限制的风险,这样才能提高爬虫工作的效率。那么,如何防止网络爬虫被限制呢?下面介绍几种有效…

在亚马逊云科技AWS上利用RAG搭建一个向量库云原生AI对话机器人

简介: 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践,并应用到自己的日常工作里。 本次介绍的是如何利用亚马逊云科技一系列热门A…

昇思25天学习打卡营第16天|Diffusion扩散模型,DCGAN生成漫画头像

Diffusion扩散模型 关于扩散模型(Diffusion Models)有很多种理解,本文的介绍是基于denoising diffusion probabilistic model (DDPM),DDPM已经在(无)条件图像/音频/视频生成领域取得…

7.30 模拟赛总结 [神奇性质]+[线段树二分]

复盘 7:40 成功开题,艾教场 看 T1,感觉很神奇,但看数据范围没有开到 1 e 9 1e9 1e9 之类的,应该是得怎么搜一下;T2 发现做过原题,秒了;T3 第一眼没看懂题,推样例始终不理解其中的…

使用Leaflet GeoMan结合天地图进行自由标绘实战

目录 前言 一、Leaflet GeoMan是什么 1、关于Leaflet GeoMan 2、关于开源版和企业版 3、相关的方法介绍 二、使用Geoman来进行自由标绘实战 1、相关资源准备 2、新建html网页 3、初始化地图及绑定Geoman控件 三、自由标绘的成果 1、整体效果 2、添加空间对象 3、开…

语音交互、AI问答,等你来体验!

功能背景 在实际大屏应用中,用户向大屏直接下达语音指令显的越来越便捷,其中体现的交互感也比通过动作指令来的更加强烈,给用户带来更高效的服务体验。目前EasyV平台开发的自定义事件交互已经很完善,组件之间可以进行触发联动。 …

python 装饰器及使用场景

1. 装饰器的理解 上面这种用装饰器的效果和下面这种是一样的,两个圈起来的是等价的,只是写法不一样,用装饰器函数 更简洁一些。 总的来说,装饰器的作用是:当定义一个函数的时候,通过在其上面加上装饰器&…

C:关于位操作符:、|、^、~的一些应用

一些用来熟悉位操作符的应用 一、按位异或:^ 异或运算:相同为0,相异为1 应用:在不引入临时变量(第三变量)的情况下,实现两个整数的交换。 关于两个整数交换,我们有一些方法&…

Docker Compose部署项目+使用

目录结构 - suggestion/- backend/ # 我的后端项目- app.py- other_files/- docker-compose.yml- Dockerfile- requirements.txt获得requirements.txt 命令行输入:pip list --formatfreeze > requirements.txt 因为使用 pip freeze > requirements.txt 导出…

创建了Vue项目,需要导入什么插件以及怎么导入

如果你不知道怎么创建Vue项目,建议可以看一看这篇文章 怎么安装Vue的环境和搭建Vue的项目-CSDN博客 1.在idea中打开目标文件 2.系在一个插件Vue.js 3.下载ELement UI 在Terminal中输入 # 切换到项目根目录 cd vueadmin-vue # 或者直接在idea中执行下面命令 # 安装element-u…

漏洞打靶-tomato

这是一个很有意思的靶场,靶机的安装过程请参考我的文章“漏洞打靶-hackme”,进入靶场后,迎面而来的就是一个大tomato,然后就无从下手了,查目录查不出来,sql注入也没地方注入 这时候我们可以用kali的nmap去查…

ARM学习(29)NXP 双coreMCU MCXN94学习

笔者来介绍一下NXP 双core板子 ,新系列的mcxn94 1、MCX 新系列介绍 恩智浦 MCU 系列产品包括 Kinetis 、LPC 系列,以及 i.MX RT 系列,现在又推出新系列产品 MCX 产品,包括四个系列,目前已经发布产品的是 MCX N 系列。…

第十四天7.25(git)

1.git 1.git功能特性 1.克隆数据库版本:从服务器上克隆数据库本机上 2.提交代码:在本机上自己创建的分支上提交代码 3.合并分支:在本机上合并分支 4.拉取合并分支:新建一个分支,把服务器上最新的代码Fetch下来&…

微软工具合集 | Microsoft PowerToys v0.83.0

PowerToys是由微软开发的一款免费系统工具集,专为Windows 10和Windows 11系统设计。它提供了一系列高效实用的工具,旨在帮助用户提升操作系统的使用效率和个性化程度。PowerToys工具集深受系统管理员和高级用户的喜爱,通过集成多种工具&#…

XXE -靶机

XXE靶机 一.扫描端口 进入xxe靶机 1.1然后进入到kali里 使用namp 扫描一下靶机开放端口等信息 1.2扫描他的目录 二 利用获取的信息 进入到 robots.txt 按他给出的信息 去访问xss 是一个登陆界面 admin.php 也是一个登陆界面 我们访问xss登陆界面 随便输 打开burpsuite抓包 发…

《深入浅出WPF》学习笔记二.为对象属性赋值的三种方式

《深入浅出WPF》学习笔记二.为对象属性赋值的三种方式 WPF用户图形界面是树状结构 👆wpf文档大纲 👆winform文档大纲 wpf的用户图形界面是树状结构,与winform不同点在于,winform同样存在树状结构的控件(比如panel、gridcontrol等…

Wi-Fi、WLAN、Bluetooth、zigbee、蜂窝网络、4g5g、MQTT

为什么打开手机的WiFi连接,显示的是WLAN? 分清Wi-Fi、WLAN、Bluetooth、zigbee、蜂窝网络、4g5g、MQTT这些概念. 一、WLAN、WIFI、WAPI WLAN是利用无线通信技术在局部区域内构建的网络,家庭/办公室里的网络就是一个WLAN,WLAN是一…

【数据结构】Java实现二叉搜索树

二叉搜索树的基本性质 二叉搜索树(Binary Search Tree, BST)是一种特殊的二叉树,它具有以下特征: 1. 节点结构:每个节点包含一个键(key)和值(value),以及指…