韩顺平 集合

news2024/9/22 10:07:31

集合

  • 一、体系结构图
  • 二、Collection
    • 2.1 Collection 接口和常用方法
    • 2.2 集合遍历
      • 2.2.1 迭代器
      • 2.2.2 增强for循环
  • 三、List接口及其常用方法
    • 3.1 三种遍历方式
    • 3.2 ArrayList
    • 3.3 LinkedList
  • 四 MAP
    • 4.1 hashmap


一、体系结构图

在这里插入图片描述
在这里插入图片描述
集合主要是两组 单列和双列集合
Collection接口有两个重要的子接口 List和Set
Map实现 接口的实现子类是双列集合,存放的是K-V

二、Collection

2.1 Collection 接口和常用方法

Collection 常用方法,因为它是一个接口,不能直接实例化所以这里使用ArrayList来演式。
在这里插入图片描述

package com.cky.leedecode;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;

public class test {
    public static void main(String[] args) {
        Collection collection = new ArrayList<>();
        collection.add("a");
        collection.add("b");
        collection.add("c");
        System.out.println(collection);
        System.out.println(collection.remove("a"));
        System.out.println(collection);
        System.out.println(collection.contains("b"));
        System.out.println(collection.size());
        boolean empty = collection.isEmpty();
        System.out.println(empty);
        collection.clear();
        System.out.println(collection);
        ArrayList arrayList = new ArrayList();
        arrayList.add("d");
        arrayList.add("f");
        System.out.println(collection.addAll(arrayList));
        System.out.println(collection.containsAll(arrayList));
        System.out.println(collection);

        System.out.println(collection.removeAll(arrayList));
        System.out.println(collection);
    }
}

2.2 集合遍历

2.2.1 迭代器

任何一个实现Collection接口的对象,都可以通过iterator()方法获得一个迭代器对象,通过该迭代器对象可以遍历集合内容。
在这里插入图片描述
有两个常用方法,hasNext()和next()
在调用next()方法前,都要先执行hasNext()来判断是否有下一个对象,如果不判断,可能会出现空指针异常。
next()作用:①指针下移 ②返回当前指针的元素。

  //iterator
       	Collection collection = new ArrayList<>();
        collection.add("d");
        collection.add("f");
        Iterator iterator = arrayList.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }

这段代码的快捷键 itit。所有快捷键的快捷键 ctrl+j

 while(iterator.hasNext()){
            System.out.println(iterator.next());
        }

2.2.2 增强for循环

进行调试 会发现其实底层还是new了一个迭代器,增强for循环其实就是一个简化的迭代器

      //增强for循环 底层仍然是迭代器   也可以用于数组
        for (Object o : collection) {
            System.out.println(o);
        }

三、List接口及其常用方法

实现List接口的子类,有序(添加和取出顺序一样)并且可以重复
支持索引,索引从0开始
在这里插入图片描述
这里好像理解了老师前面说的,为什么不用数组,用集合,比如数组的话,它的容量是固定的,我们增加或删除都会比较麻烦,但是随机访问比较方便。
还有就是集合底层帮助我们实现了对应的增删改查方法,让我们不用去想着怎么删除之后移动数组这些。

3.1 三种遍历方式

在这里插入图片描述

LinkedList 的 get(int index) 方法在内部是通过遍历链表来找到对应位置的元素的,所以在使用 for 循环遍历 LinkedList 时,每次 get(index) 都会从链表的开头或结尾开始查找元素,时间复杂度为 O(n)。因此,虽然 LinkedList 支持用 for 循环遍历,但效率相对较低,特别是在链表元素较多时。 这也就是为什么通常建议在遍历 LinkedList 时使用迭代器 (Iterator) 或增强型 for 循环,因为它们不会重复从头开始查找,而是直接顺序遍历链表的元素,从而提高效率

3.2 ArrayList

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

源码分析
ArrayList源码分析

3.3 LinkedList

在这里插入图片描述

在这里插入图片描述

LinkedList源码分析

四 MAP

4.1 hashmap

在这里插入图片描述
在这里插入图片描述
源码

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

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

相关文章

第十五章:高级调度

本章内容包括&#xff1a; 使用节点污点和pod容忍度组织pod调度到特定节点将节点亲和性规则作为节点选择器的一种替代使用节点亲和性进行多个pod的共同调度使用节点非亲和性来分离多个pod Kubernetes允许你去影响pod被调度到哪个节点。起初&#xff0c;只能通过在pod规范⾥指定…

Linux安装Nginx后,无法解析Windows主机Hosts文件

问题展示&#xff1a; 配置好Linux的Nginx配置后&#xff0c;Windows同样配置好host&#xff0c;而通过浏览器只能用IP地址成功访问&#xff0c;而域名则不行 解决方法&#xff1a; 点击Windows图标&#xff0c;搜索记事本&#xff0c;选择以管理员身份运行&#xff0c;编辑…

php-xlswriter实现数据导出excel单元格合并,内容从指定行开始写

最终效果图&#xff1a; 代码&#xff1a; public function export_data() {$list $this->get_list_organ();$content [];$content[] []; // 第2行不设置内容&#xff0c;设置为空foreach ($list as $key > $value) {$content[] [$value[organ_name], $value[clas…

防火墙技术与地址转换

文章目录 前言一、四种区域二、实验拓扑图基础配置防火墙配置测试结果 前言 防火墙是计算机网络中的一种安全设备或软件功能&#xff0c;旨在监控和控制进出网络的网络流量。其核心目的是保护内部网络免受外部攻击或不必要的访问。防火墙通过设定一系列安全规则&#xff0c;允…

【iOS】UITableViewCell的重用问题解决方法

我自己在实验中对cell的重用总结如下&#xff1a; 非自定义Cell和非自定义cell的复用情况一样&#xff1a; 第一次加载创建tableView的时候&#xff0c;是屏幕上最多也显示几行cell就先创建几个cell&#xff0c;此时复用池里什么都没有开始下滑tableView&#xff0c;刚开始滑…

可视化编程-七巧低代码入门02

1.1.什么是可视化编程 非可视化编程是一种直接在集成开发环境中&#xff08;IDE&#xff09;编写代码的编程方式&#xff0c;这种编程方式要求开发人员具备深入的编程知识&#xff0c;开发效率相对较低&#xff0c;代码维护难度较大&#xff0c;容易出现错误&#xff0c;也需要…

最新的APS高级计划排程系统推动的MRP供应链计划是什么?

在当下“内卷”的市场环境下&#xff0c;制造业的订单需求从过去大批量标准品生产已经演变成小批量、多订单的非标订单生产&#xff0c;这对制造业的供应链提出了更高的要求。为了应对市场实现产销平衡&#xff0c;中大型的企业都开始重视供应链的建设工作&#xff0c;以应对企…

数字签名和CA数字证书的核心原理和作用

B站讲解视频&#xff0c;讲述HTTPS CA认证的整个行程过程与原理 https://www.bilibili.com/video/BV1mj421d7VE

[Qt][Qt 文件]详细讲解

目录 1.输入输出设备类2.文件读写类3.文件和目录信息类 1.输入输出设备类 在Qt中&#xff0c;⽂件读写的类为QFile&#xff0c;其⽗类为QFileDevice QFileDevice提供了⽂件交互操作的底层功能QFileDevice的⽗类是QIODevice&#xff0c;其⽗类为QObject QIODevice是Qt中所有I/O…

【数学建模备赛】Ep05:斯皮尔曼spearman相关系数

文章目录 一、前言&#x1f680;&#x1f680;&#x1f680;二、斯皮尔曼spearman相关系数&#xff1a;☀️☀️☀️1. 回顾皮尔逊相关系数2. 斯皮尔曼spearman相关系数3. 斯皮尔曼相关系数公式4. 另外一种斯皮尔曼相关系数定义5. matlab的用法5. matlab的用法 三、对斯皮尔曼相…

立仪光谱共焦传感器行业应用|透明胶水高度测量

01&#xff5c;检测需求&#xff1a;透明胶水高度测量 02&#xff5c;检测方式 根据客户要求及观察我们使用立仪科技D40A26XL镜头搭配E系列控制器进行测量 03&#xff5c;光谱共焦测量结果 经过测量可以得出胶水的高度为1076.406μm 04&#xff5c;光谱共焦侧头 D40A26XL侧头…

uniapp接口请求this.$request

代码示例&#xff1a; createPhoto(url) {this.$request({url: /emp/gallery-photo/create,//后端接口method: post,//请求方法header: {//请求头tenant-id: 1,},data: {//请求参数galleryId: this.albumId,empUserId: this.empUserId,"url": url,}}).then((res) &…

JVM -垃圾回收器

本人在这篇文章中讲解了垃圾回收机制&#xff0c;这为前置知识 美团一面面经&#xff1a;Threadlocal&#xff08;线程局部变量的原理&#xff09;-&#xff1e;内存泄漏问题-&#xff1e;垃圾回收机制_threadlocal回收-CSDN博客 首先对前置知识漏洞做一个补充&#xff1a;ja…

时序电路实验-节拍脉冲发生器

二、实验目的 掌握节拍脉冲发生器的设计方法&#xff0c;理解节拍脉冲发生器的工作原理。 三、实验环境 PC计算机 四、实验内容 单步/连续节拍发生电路设计 增加两个2-1多路选择器&#xff0c;可将图3.3所示电路修改为图3.5所示电路。 图3.5单步/连续节拍脉冲发生器工作波…

如何进行长截图的两种方法

前言 本文主要讲2种截图方式&#xff0c;分别是谷歌和QQ。 谷歌分为Web端 和 移动端&#xff0c;选一种即可。 第一种&#xff1a;谷歌浏览器控制台自带的 1.先把控制台语言更改为中文&#xff0c;方便查看 ①.按F12&#xff0c;点击设置面板 ②.修改语言为中文并关闭 ③.点击…

七、OpenCVSharp 中的图像边缘检测

文章目录 简介一、Sobel 算子1. 水平和垂直方向的 Sobel 算子2. 梯度幅值和方向的计算3. Sobel 算子的参数调整和效果优化二、Canny 边缘检测1. Canny 算法的步骤详解(高斯平滑、梯度计算、非极大值抑制、双阈值检测)2. 高低阈值的选择对边缘检测结果的影响3. Canny 边缘检测…

阿里云服务器CentOS7安装MinIO

1. 概述 MinIO是一个开源的分布式对象存储服务器&#xff0c;支持S3协议并且可以在多个节点上实现数据的高可用和容错&#xff0c;采用Go语言开发&#xff0c;拥有轻量级、高性能、易部署等特点&#xff0c;并且可以自由选择底层存储介质。 MinIO主要特点&#xff1a; 高性能&…

《MySQL全面指南:从基础到精通》专栏大纲

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 工&#x1f497;重&#x1f497;hao&#x1f497;&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

Linux 平台 PulseAudio 音频播放数据通路 I

Linux 内核中&#xff0c;音频子系统由 ALSA 框架实现&#xff0c;用户空间应用程序通过 ALSA 框架向 devtmpfs 虚拟文件系统&#xff0c;即 /dev/snd 目录下导出的一组紧密相关的设备文件&#xff0c;如 controlC0、pcmC0D0c 和 pcmC0D0p 等与 Linux 内核音频子系统交互&#…

ORB-SLAM3(Failed to load image)问题解决(WSL2配置)

一、概述 因为需要使用wsl2进行视觉SLAM的配置&#xff0c;我选择的事ORB-SLAM3&#xff0c;原来之前也配置过&#xff0c;比较熟悉&#xff0c;这次换了一个新的系统wsl2下的Ubuntu20.04下面进行配置。中间出现了一些跟原来不太一样的问题。这里将遇到的问题进行记录一下。 二…