【Java寒假打卡】Java基础-集合Collection

news2024/10/6 2:29:50

【Java寒假打卡】Java基础-集合Collection

    • 集合与数组之间的区别
    • 集合体系结构
    • Collection常用的方法
    • 集合-迭代器
    • 迭代器原理分析
    • 迭代器删除方法的注意事项
    • 增强for循环

集合与数组之间的区别

  • 数组的长度是不可变的,集合的长度是可变的
  • 数组可以存基本数据类型和引用数据类型,集合只能存引用数据类型,如果存基本数据类型,需要存对应的包装类
package com.hfut.edu.test3;

import java.util.ArrayList;
import java.util.Arrays;

public class test11 {
    public static void main(String[] args) {
        // 数组可以存储基本数据类型也可以存储引用数据类型
        int[] arr1 = {1,2,3};
        String[] arr2 = {"a","b","c"};// 字符串数组

        // 打印数组
        System.out.println(Arrays.toString(arr1));
        System.out.println(Arrays.toString(arr2));

        // 集合只能存储引用数据类型 字符串
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("a");
        list1.add("b");
        list1.add("c");

        System.out.println(list1);

        // 如果集合要存储基本数据类型 实际存储的是包装类
        ArrayList<Integer> list2 = new ArrayList<>();
        list2.add(1);
        list2.add(2);
        list2.add(3);

        System.out.println(list2);

    }
}


集合体系结构

在这里插入图片描述

Collection常用的方法

在这里插入图片描述

关于removeIf方法的底层实现原理:底层会遍历集合,得到集合中的每一个元素,然后将集合中的每一个元素都到lambda表达式中判断一下,如果返回的是true 进行删除 反之进行保留

package com.hfut.edu.test3;

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

public class test12 {
    public static void main(String[] args) {
        Collection<String> collection = new ArrayList<>();// 父类引用指向子类对象

        // 添加元素
        collection.add("a");
        collection.add("b");
        collection.add("ccc");
        collection.add("d");
        System.out.println(collection);

        // 删除指定元素
        method1(collection);

        // 根据条件删除元素
        // 使用lambda表达式 作为指定的条件
        collection.removeIf(
                (String s)->{
                    return s.length() == 3;// 删除长度为3的字符串
                }
        );

        System.out.println(collection);

        // 判断集合中是否包含字符串a
        boolean result1 = collection.contains("a");
        System.out.println(result1);

        // 判断集合是不是空
        boolean result2 = collection.isEmpty();
        System.out.println(result2);

        // 输出集合的长度
        System.out.println(collection.size());

    }

    private static void method1(Collection<String> collection) {

        // 删除指定元素  返回布尔类型的数据
        boolean result1 = collection.remove("a");// true
        boolean result2 = collection.remove("fff"); // false

        System.out.println(result1);
        System.out.println(result2);



    }
}


集合-迭代器

在这里插入图片描述

package com.hfut.edu.test3;

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

public class test14 {
    public static void main(String[] args) {
        Collection<String> list = new ArrayList<>();// Colletcion引用 指向子类对象

        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");

        // 创建该集合的迭代器对象
        Iterator<String> it = list.iterator();
        // 遍历迭代器 hasNext()判断当前位置是否有元素 next()取出当前元素
        while(it.hasNext())
        {
            System.out.println(it.next());// 打印当前迭代器指向的元素
        }
    }
}

迭代器原理分析

在这里插入图片描述

迭代器删除方法的注意事项

集合删除方法,集合内的元素会自动的向前填充,集合的长度会自动减一

package com.hfut.edu.test4;

import java.util.ArrayList;

public class test1 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("b");
        list.add("b");

        // 删除所有的b元素
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);// 取出集合中每一个元素
            if(s.equals("b")){
                list.remove(i);// 删除该元素
                i--;// 因为集合容器删除一个元素之后集合长度会减一  所以要想删除相邻的重复元素 必须i--
            }
        }

        System.out.println(list);
    }
}


迭代器删除方法,不需要考虑集合长度自动减一

package com.hfut.edu.test4;

import java.util.ArrayList;
import java.util.Iterator;

public class test1 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("b");
        list.add("b");

        // 删除所有的b元素
        Iterator<String> it = list.iterator();// 创建集合的迭代器

        while(it.hasNext())
        {
            String s = it.next();// 取出当前迭代器指向的集合元素
            if(s.equals("b")){
                it.remove();// 删除当前元素
            }
        }
        System.out.println(list);
    }
}

增强for循环

在这里插入图片描述

package com.hfut.edu.test4;

import java.util.ArrayList;

public class test2 {
    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");
        list.add("f");
        list.add("g");

        // 使用增强for循环
        for(String str:list){
            System.out.println(str);
        }

    }
}

在这里插入图片描述

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

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

相关文章

Xilinx AXI4 协议

AXI4 相对复杂&#xff0c;但 SOC 开发者必须掌握。AXI 协议的具体内容可参考 Xilinx UG761 AXI Reference Guide。在这里我们简单了解一下。 AXI4 所采用的是一种 READY&#xff0c;VALID 握手通信机制&#xff0c;即主从模块进行数据通信前&#xff0c;先根据操作对各所用到的…

填满背包方案数OJ

目录 LintCode 炼码物品大小不重复的填满背包的方案数 LintCode 炼码 物品大小存在重复情况 LintCode 炼码不重复的组合个数 完全背包_牛客题霸_牛客网 LintCode 炼码物品大小不重复的填满背包的方案数 描述给出 n 个物品, 以及一个数组, nums[i]代表第i个物品的大小, 保证大…

编辑PDF文件的两种方法

PDF文件具备较好的稳定性、兼容性&#xff0c;在日常工作中的应用非常广泛&#xff0c;但想要编辑文件内容就不那么容易了&#xff0c;下面来说说编辑PDF文件的两种方法。 方法一&#xff1a; 我们知道&#xff0c;查看PDF文件只需要阅读器就可以了&#xff0c;如果想对文件内…

springboot 整合 webservice服务

目录webservice百科创建一个springboot项目并导入相关依赖编写webservice接口编写实现类发布webservice浏览器访问postman调用在前一段时间用到了webservice服务&#xff0c;今天整理了一下&#xff0c;记录下来。webservice百科 Web Service是一个平台独立的&#xff0c;低耦…

Apifox调用Security权限接口

Apifox调用Security权限接口1. SpringBoot3.0集成SpringSecurity1.1 pom1.2 properties配置2. Apifox 配置2.1 配置根目录Auth2.2 ApiFox 分享调用本地接口本教程环境&#xff1a; Apifox&#xff1a;2.2.14 &#xff08;建议更新到最新版本&#xff0c;老版本Auth从父级继承可…

flowable数据表详解

爬虫组件分析目录概述需求&#xff1a;设计思路实现思路分析1.flowable2.数据表的命名规则3.ACT_RU_*4.ACT_ID_*5.ACT_HI_*数据表的介绍参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hard…

AjaxRedis问题总结

一、JQuery——Ajax实现三大方法的应用及区别&#xff08;get,post,ajax&#xff09; 1. $.get()方法 <script type"text/javascript">$(function () {$("#send").click(function () {$.get("AjaxHandler.ashx", {username: $("#use…

【操作系统】国科大《高级操作系统》思考题整理

参考用书&#xff1a;《Linux内核设计的艺术》 引言 国科大杨力祥《高级操作系统》思考题整理 思考题 为什么开始启动计算机的时候&#xff0c;执行的是BIOS代码而不是操作系统自身的代码&#xff1f;&#xff08;P1&#xff0c;3&#xff09; 加电的一瞬间&#xff0c;计算…

graphviz安装及使用、决策树生成

一、graphviz下载安装 下载网址&#xff1a;http://www.graphviz.org/download/ 选择合适版本下载 1.1 双击安装 1.2 点击下一步 1.3 点击我接受 1.4 添加至系统路径 勾选添加至当前用户的系统路径&#xff0c;创建桌面图标可选&#xff0c;点击下一步 1.5 选择安装位置 浏…

「设备树」dtb给内核的两种工作模式

一&#xff0c;传递dtb给内核对于传统bootloader提供两种工作模式&#xff1a;一是启动加载模式&#xff08;start loading&#xff09;&#xff0c;一是下载模式&#xff08;downloading&#xff09;工作在启动加载模式时&#xff0c;bootloader会自动执行bootcmd命令&#xf…

AGV移动机器人PID运动控制

PID算法基本原理 PID算法是控制行业最经典、最简单、而又最能体现反馈控制思想的算法&#xff0c;PID算法利用反馈来检测偏差信号&#xff0c;并通过偏差信号来控制被控量。而控制器本身就是比例、积分、微分三个环节的加和。其功能框如图1所示&#xff1a; 考虑在某个特定的时…

C语言-指针进阶(9.1)

目录 思维导图&#xff1a; 1. 字符指针 2. 指针数组 3. 数组指针 3.1 数组指针的定义 3.2 &数组名VS数组名 3.3 数组指针的使用 4. 数组传参和指针传参 4.1 一维数组传参 4.2 二维数组传参 4.3 一级指针传参 4.4 二级指针传参 写在最后 思维导图&#xff1a;…

年底赶进度,如何将开发风险降到最低?

1、科学规划风险策略和控制流程 针对开发流程各环节中可能存在的风险&#xff0c;项目经理需要进行项目风险分析&#xff0c;并制定符合项目特点的风险评估和监督机制&#xff0c;实行岗位负责制&#xff0c;提前制定好控制策略&#xff0c;将开发风险降到最低。 如何将开发风险…

分布式基础篇2——分布式组件

一、SpringCloud Alibaba1、简介2、为什么使用3、版本选择4、依赖选择二、SpringCloud Alibaba 组件1、Nacos作为注册中心2、OpenFeign3、Nacos作为配置中心namespaceData IDGroup同时加载多个配置文件三、Spring Cloud1、GateWay简介三大核心部分网关的使用视频来源: 【Java项…

Ansible剧本流程控制

handlers触发器 notify&#xff1a;监控上面的模块执行是否发生变化 chufa&#xff1a;自定义的任务名称&#xff0c;自动去handlers里面匹配相对应的任务名称执行动作 下方是copy了/data/copy/下的文件到server2组里的主机/data/monster/handlers/下&#xff0c;notify监控发…

如何下载指定版本的xcode

如何下载指定版本的xcode一、安装最新版本xcode二、下载指定版本xcode一、安装最新版本xcode 从苹果商店中获取并安装即可。 但是安装最新版有个风险&#xff0c;就是它有系统版本的要求&#xff0c;比如这里要求macOS版本最低是12.5 如果版本不够的话&#xff0c;可以升级系统…

【蓝桥杯基础题】2020年省赛填空题—既约分数

&#x1f451;专栏内容&#xff1a;蓝桥杯刷题⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录一、题目背景二、题目描述三、题目分析1.求最大公约数①辗转相减法②穷举法③辗转相除法④辗转相除法&#xff08;递归&am…

LVGL之学习篇(一)

LVGL之学习篇(一) 学习目的 LVGL简介 LVGL本身是一个图形库&#xff0c;前身是litterVGL。其作者是来自匈牙利的Gabor Kiss-Vamosikisvegabor&#xff0c;LVGL用C语音编写&#xff0c;以实现最大的兼容性(与C兼容)&#xff0c;模拟器可在没有嵌入式硬件的PC上启动嵌入式GUI设计…

MATLAB实验三

实验三 &#xff08;实验报告中附上每题的主要程序和结果&#xff09; 1、在命令行窗口中分别输入下列命令&#xff0c;对应输出结果是 A&#xff0e;命令x[-2:2] B&#xff0e;命令xzeros(1,2);x>0 C&#xff0e;命令ydiag(eye(3),1) D&#xff0e;命令[-2:2]30*eye(…

内存分页机制

文章目录内存分页的原因一级页表分页机制的原理一级页表二级页表二级页表概述地址转换启动分页机制内存分页的原因 在还未出现内存分页机制之前&#xff0c;我们都内存分段机制下工作。 但是&#xff0c;这样会有个问题。来看个下方的例子。 进程在分段机制下运行 下图&…