Java学习笔记(17)

集合进阶

单列集合

Collection

List set

Add clear remove contains isempty size

Add方法可能也会添加失败

同理,可能删除失败

Contains细节

为什么要重写equals?

因为contains底层用的是object类中的equals方法,比较的是地址值,这样即使元素相同,也会返回false,所以要重写equals方法

Collection遍历方式

迭代器遍历 iterator

获取迭代器,是调用.iterator方法,不是new,获取一个迭代器对象

迭代器遍历时,不依赖索引,利用指针和移动的方式获取集合中的元素

遍历完毕后,指针不会复位,会一直指向最后没有元素的位置

如果再想遍历,只能再次获取一个新的迭代器

第三点的意思主要是每次使用next都会移动指针,循环中多次使用next可能会指向没有元素的位置。

要删除,得用迭代器的remove方法删除;添加暂时没有办法

增强for遍历

JDK5之后出现,原理就是迭代器,简化迭代器代码

s表示第三方变量,依次表示每一个数据

细节:修改s,不会改变集合中的数据

Lambda表达式遍历

JDK8开始有

.forEach

只有迭代器可以删除掉collection的元素

List集合

删除remove 注意的细节

这里的1表示的是索引,而不是元素1

会优先调用实参和形参类型一致的方法

如果一定要删掉元素1

需要手动装箱,把1变成integer类型

List遍历

列表迭代器  也是一个接口,是iterator的子接口

在遍历的过程中,可以增删元素

迭代器可以删(用的是迭代器的remove方法,而不是集合的remove方法)

列表迭代器同时可以增删(用的也是迭代器的方法)

数据结构

栈

后进先出,先进后出

队列

先进先出,后进后出

数组  (在内存中是一片连续的空间)

查询快,增删慢

链表

增删快,查询慢

只需要改变地址

双向列表

Arraylist

扩容机制

添加第一个元素的源码

添加第11个元素(或一次性加很多个元素)的源码

Linkedlist集合

双向列表

Linkedlist 添加元素过程的底层源码

Iterator源码

调用.iterator()方法,就是创建一个内部类的对象

泛型

JDK5开始的

只支持引用数据类型

没有泛型的时候,集合怎么存数据的?

直接add皆可,都会被看成是object类型

但是就不能使用集合里元素类型的子类特有方法

泛型好处

泛型其实是伪泛型

Java文件里有写泛型,但是到编译时,即编译成class文件时,集合里面的数还是会被当成object类型处理,只不过,底层还是会将object类型根据泛型强转成对应的类型。

这就是泛型的擦除。

原因:泛型是JDK5才出现的,为了向下兼容,才这样做。

为什么不能写基本数据类型?

因为基本数据类型没得转成object类型,只有写他的包装类,才能转成object类型编译

泛型的使用场景

泛型类

类型不确定时,在定义一个类时就可使用

泛型方法

Public static都是修饰符

E...e是可变参数,用来表示一个或者多个变量,此时e就是一个数组,可以遍历获取里面每一个元素

泛型接口

第一种

第二种

泛型的继承

<>里写什么类型,只能添加什么类型的对象,即使是子类也是不行,泛型没得继承

但是数据是具备继承性的

泛型的通配符

?表示

可以接受Ye Fu,不能接受Zi

总结

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

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

相关文章

为什么穷人什么都懂,就是不懂赚钱?2024金矿项目! 2024创业好项目 !2024创业新项目新商机! 2024超级机会

为什么穷人什么都懂&#xff0c;就是不懂赚钱&#xff1f;有位网友是这么说的&#xff0c;穷人的思维有一个致命的缺陷&#xff0c;就是追求确定性&#xff0c;进而失去了可能性。而赚钱的真相实际上非常残酷。世界上能够赚钱的事情必定是不确定的&#xff0c;能够赚取巨额财富…

万亿参数GPU!算力提升30倍!英伟达新核弹B200重磅发布!

关注文章底部的公众号,获取每日AI资讯 前沿 3月18日-21日期间,英伟达在美国圣何塞召开GTC大会。创始人黄仁勋也在GTC大会上,做了一场长达两小时的开幕演讲,展示了其在AI芯片、机器人、汽车等领域的最新研发成果和技术进展,号称让全世界用上AI。 全球头号人工智能领域开发…

【JavaEE -- 文件操作IO有关面试题】

文件操作IO有关面试题 1.查找硬盘上的文件位置1.1 思路1.2 执行代码 2. 实现文件复制2.1 思路2.2 代码执行 3. 打印搜索的词的文件路径3.1 思路3.2 代码执行 1.查找硬盘上的文件位置 给定一个文件名&#xff0c;去指定的目录中进行搜索&#xff0c;找到文件名匹配的结果&#…

算法第三十一天-直方图的水量

直方图的水量 题目要求 解题思路 使用面向列的计算比面向行的计算更加容易。我们只需要考虑当前的位置的左右最高模板的高度。 方法一、暴力解法 每个位置能接到多少雨水&#xff0c;很容易想到[木桶效应]&#xff0c;即是由两边最短的木板限制的。那么直观思路就是&#x…

高职(大专)结构化面试之答题思路

目录 一、岗位认知 二、职教热点 三、教育教学 四、人际关系 五、组织管理 六、应急应变 七、时政与教育 八、专业知识 一、岗位认知 考试方向&#xff1a;主要考察对岗位的全面认识、职业目标、职业规划、职业理想。 必背题目&#xff1a; 1.“你为什么要报考我们学校的教师岗…

Postgres几种不同的索引提高查询性能

B-tree 索引&#xff1a; B-tree&#xff08;平衡树&#xff09;是 PostgreSQL 中最常用的索引类型。它适用于范围查询、排序和等值查询。B-tree索引对于数据类型的要求不严格&#xff0c;适用于大多数情况。 CREATE INDEX index_name ON table_name USING btree (column_name)…

扶贫惠农推介系统|基于jsp技术+ Mysql+Java+ B/S结构的扶贫惠农推介系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

量化探店记

1 人工智能的应用 人工智能&#xff08;AI&#xff09;在量化金融领域的应用非常广泛&#xff0c;它可以帮助量化交易员进行数据分析、模型建立、风险管理和交易决策等方面。以下是一些 AI 在量化金融中的常见应用&#xff0c;并附有相应的示例&#xff1a; 预测模型&#xff…

Python学习:元组

Python 元组概念 Python 中的元组&#xff08;tuple&#xff09;是不可变的有序集合。它是一种数据类型&#xff0c;类似于列表&#xff08;list&#xff09;&#xff0c;但在创建后不能被修改。元组使用圆括号 () 来表示&#xff0c;其中的元素可以是任意类型&#xff0c;并且…

[M哈希表] lc2671. 频率跟踪器(哈希表+思维)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接&#xff1a;2671. 频率跟踪器 2. 题目解析 挺有意思的哈希表题目&#xff0c;单独一个哈希表的话&#xff0c;每次遍历去判断有没有数字出现的次数&#xff0c;就会超时。 所以&#xff0c;考虑两个哈希表的使用&#xff…

初识数据库原理:为什么需要数据库?

初识数据库原理&#xff1a;什么是数据库&#xff1f; Chapter1&#xff1a;什么是数据库&#xff1f; 笔记来源&#xff1a;《漫画数据库》–科学出版社 1.1 为什么需要数据库&#xff1f; 文件应用的管理方式&#xff0c;数据会出现重复。 若各个部门各自管理自己一方的数…

rust - 对文件夹进行zip压缩加密

本文提供了一种对文件夹进行zip压缩并加密的方法。 添加依赖 cargo add anyhow cargo add walkdir cargo add zip cargo add zip-extensions计算文件夹的大小 目的是对需要压缩的文件夹的大小做一个限制。当然如果资源足够的话&#xff0c;可以去掉此限制。 let mut total_s…

2024年【T电梯修理】考试内容及T电梯修理作业考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 T电梯修理考试内容根据新T电梯修理考试大纲要求&#xff0c;安全生产模拟考试一点通将T电梯修理模拟考试试题进行汇编&#xff0c;组成一套T电梯修理全真模拟考试试题&#xff0c;学员可通过T电梯修理作业考试题库全真…

Linux手动创建用户不使用useradd【七步走完成】

文章目录 第一步&#xff1a;修改 /etc/passwd 文件第二步&#xff1a;修改 /etc/shadow 文件第三步&#xff1a;修改 /etc/group 文件第四步&#xff1a;新建用户家目录第五步&#xff1a;复制/etc/skel目录下的环境变量配置文件到家目录下第六步&#xff1a;修改家目录的权限…

AI系统性学习—LangChain入门

文章目录 1、LangChain入门1.1 简介1.2 架构1.3 核心概念1.2 快速入门1.3 安装 2、LangChain Prompt Template2.1 什么是提示词模版2.1 创建一个提示词模版2.2 聊天消息提示词模版2.3 模版追加示例 3、语言模型3.1 LLM基础模型3.2 LangChain聊天模型3.3 自定义模型3.4 输出解析…

基于springboot的stone音乐播放器的设计与实现

摘 要 随着我国经济的高速发展与人们生活水平的日益提高&#xff0c;人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下&#xff0c;人们更趋向于足不出户解决生活上的问题&#xff0c;stone音乐播放器展现了其蓬勃生命力和广阔的前景。与此同时&#xff0c;…

在线学习:UDS诊断 通过CANoe

本周末2天的时间&#xff0c;可以线下带大家对车载项目&#xff1a; uds诊断进行实操训练和CANoe工具的灵活使用 ​​​​​​​ 本博主从事新能源汽车的研发部&#xff0c;主要是嵌入式方面的&#xff0c;对车载测试的底层逻辑非常熟悉。 需要项目或者CANoe工具实操的可以…

数电复试速成,期末速成

【拯救者】数字电路与逻辑速成(期末考研复试专升本)均可用 1️⃣先讲每章对应的基础和题目 2️⃣接着会讲对应的题目巩固 &#x1f357;提供文档下载 这里讲的是【 &#x1f337;速成&#x1f337; 速成&#x1f337; 速成】版本&#xff0c;按课本章节来&#xff0c; 抽取重…

【Unity】捕捉PC桌面的插件

【背景】 之前介绍了如何用一款名为uWindowCapture的Unity免费插件在Unity的Canvas上展示PC桌面。经过一段时间的使用,本篇继续分享此插件的一些功能和限制。 在此感谢作者Hecomi。 【特征和限制】 一般局域网络环境只能最多达到15帧的帧率,所以别幻想用来窜流游戏或者看电…

这个简单的生活方式,为你带来满满的幸福感

在今天文章的开头&#xff0c;我想请你思考一个问题&#xff1a;影响幸福感的最大因素是什么&#xff1f; 不妨先想一想&#xff0c;再往下拉&#xff0c;继续阅读。 可能不少朋友的回答&#xff0c;会是财富、事业、理想、生活环境、社会地位…… 这些因素当然对幸福感都非常重…