java后端开发day31--集合进阶(一)-----Collection集合List集合数据结构1

news/2025/3/26 23:34:34

在这里插入图片描述
(以下内容全部来自上述课程)
在这里插入图片描述

1.集合体系结构

请添加图片描述
请添加图片描述
List系列集合:添加的元素是有序、可重复、有索引
Set系列集合:添加的元素是无序、不重复、无索引

2.Collection集合

Collection是单列集合的祖宗接口(不可直接创建对象),他的功能是全部单列集合都可以继承使用的。

1.方法

请添加图片描述

2.细节

1.添加元素

List:永远返回true,因为List系列是允许元素重复的。
Set:添加元素不存在返回true,如果已经存在返回false,因为set系列不允许重复

2.删除元素

因为Collection里面定义的是共性的方法,所以不能通过索引进行删除。只能通过元素的对象进行删除。
方法会有一个布尔类型的返回值,成功true,失败false。

3.包含元素

底层是依赖equals方法进行判断是否存在的。
所以,如果集合中存储的是自定义对象,也想通过contains方法来判断是否包含,那么在javabean类中一定要重写contains方法(alt+insert)。

3.遍历方式

1.迭代器遍历

迭代器不依赖索引
迭代器在Java中的类是Iterator,迭代器是集合专用的遍历方法。
请添加图片描述
请添加图片描述
细节:

  1. 报错NoSuchElementException
  2. 迭代器遍历完毕,指针不会复位
  3. 循环中只能用一次next方法
  4. 迭代器遍历时,不能用集合的方法进行增加或者删除
    如果实在要删除,就用迭代器提供的remove方法进行删除。
2.增强for遍历

底层就是迭代器,为了简化代码书写。
JDK5以后出现的,内部原理就是一个Iterator迭代器。
所有的单列集合和数组才能用增强for进行遍历。
请添加图片描述
注意点:
s其实就是一个第三方变量,在循环的过程中依次表示集合中的每一个数据。
集合名字.for:快速生成方式

细节:
修改增强for中的第三方变量(s),不会改变集合原本中的数据。

3.Lambda表达式遍历

更简单、更直接的遍历集合的方式。
请添加图片描述

java">Collection<String> coll = new ArrayList();
coll.add("zhangsan");
coll.add("lisi");
coll.add("wangwu");
coll.forEach(s -> System.out.println(s));

3.List集合

  • 有序:存和取的元素顺序一致
  • 有索引:可以通过索引操作元素
  • 可重复:存储的元素可以重复

1.特有方法

请添加图片描述

2.遍历方式

已学:迭代器遍历、增强for遍历、Lambda表达式遍历、普通for循环(因为List集合存在索引)

1.列表迭代器遍历

请添加图片描述
ps:和迭代器差不多,就多了两个不常用的方法。

2.五种遍历方式对比
  • 迭代器遍历:在遍历的过程中需要删除元素。
  • 列表迭代器:在遍历的过程中需要添加元素。
  • 仅仅想遍历:增强for或者lambda表达式。
  • 普通for:便利的时候想操作索引。

4.数据结构

计算机存储、组织数据的方式。

须知:

  1. 每种数据结构长什么样子?
  2. 如何添加数据?
  3. 如何删除数据?

1.栈

后进先出、先进后出。
请添加图片描述

2.队列

先进先出、后进后出
请添加图片描述

3.数组

请添加图片描述

4.链表

链表中的结点是独立的对象,在内存中是不连续的,每个结点包含数据值和下一个结点的地址。
链表查询慢,无论查询哪个数据都要从头开始找。
链表的增删相对快。
请添加图片描述
请添加图片描述
请添加图片描述


http://www.niftyadmin.cn/n/5889996.html

相关文章

基于开源AI大模型与用户数据分析的S2B2C商城小程序运营策略研究

摘要&#xff1a; 随着互联网技术的飞速发展&#xff0c;数字化转型已成为企业提升竞争力的重要手段。在新媒体平台的运营过程中&#xff0c;用户数据成为企业决策的关键依据。本文旨在探讨如何运用开源AI大模型、AI智能名片以及S2B2C商城小程序等新兴技术&#xff0c;结合深入…

动态调试环境配置(Android Studio + IDA Pro)

1. 调试环境架构设计 1.1 混合调试体系构建 graph TDA[目标设备] --> B{调试通道}B -->|Java层| C[Android Studio]B -->|Native层| D[IDA Pro]C --> E[联合调试控制台]D --> E 1.2 设备调试模式配置 bash 复制 # 开启内核调试支持 adb shell "echo …

k8s面经

最近面了几场&#xff0c;k8s技能几乎成了运维的必备品了。 容器一直pending可能的原因调度问题。容器的调度策略&#xff0c;比如标签选择、容忍度或者亲和度&#xff0c;导致没有合适的节点可供调度 资源问题&#xff0c;比如宿主机的CPU内存磁盘不足&#xff0c;或者要挂载…

信息学奥赛c++语言:整数去重

题目描述 给定含有n个整数的序列&#xff0c;要求对这个序列进行去重操作。所谓去重&#xff0c;是指对这个序列中每个重复出现的数&#xff0c;只保留该数第一次出现的位置&#xff0c;删除其余位置。 输入 输入包含两行&#xff1a;第一行包含一个正整数n&#xff08;1 ≤…

《计算机图形学》第一课笔记-----opengl开发环境搭建

前言&#xff1a; 目的是为了学习计算机图形学这本书&#xff0c;在一个2维的平面上活灵活现的显示一个3维物体是很酷的一件事&#xff0c;打算先从啃下这本书作为开始。 正文 之前是准备使用vscode搭建的&#xff0c;但是阅读了一些教程后感觉太繁琐了&#xff0c;我的核心目标…

ELK traceId实现跨服务日志追踪

ELK怎么实现跨服务日志追踪&#xff0c;Trace-Id 具体实现方案及代码_kibana关联其他服务器的日志-CSDN博客 ELKMDC追踪日志 ---- SpringCloud实现传递_elk的mdc-CSDN博客 SpringBoot之HandlerInterceptor拦截器的使用 ——&#xff08;一&#xff09;-CSDN博客 在使用ELK&a…

Linux中的基本指令(下)

目录 mv指令 more指令 less指令 head指令 tail 指令 继续理解文件 重定向和追加重定向操作 理解管道 find指令 whereis 指令 bc指令 uname ‒r指令 grep 指令 关机 扩展命令 zip/unzip 指令 tar指令 关于rzsz 系统间的文件互传 接上&#xff01; mv指令 m…

【音视频】H265-NALU-AVpacket-PS-RTP(GB28181)

概述 国标平台的推流与直接使用RTSP或者RTMP推流的方法不同&#xff0c;需要先从H265格式的流地址中解析出来NALU&#xff08;直接使用FFmpeg库或者自己构建一个小型的RTSP服务器实现&#xff09;&#xff0c;然后对不同类型的NALU进行处理&#xff0c;H265视频中的NALU类型主…