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.mzph.cn/news/761545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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。 全球头号人工智能领域开发…

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

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

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

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

Python学习:元组

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

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

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

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;…

数电复试速成,期末速成

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

【Unity】捕捉PC桌面的插件

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

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

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

解决GNURadio自定义C++ OOT块-导入块时报错问题

文章目录 前言一、问题描述二、解决方法1、安装依赖2、配置环境变量3、重新编译及安装三、结果1、添加结果2、运行结果前言 本文记录在 GNURadio 自定义 C++ OOT 块后导入块时报错 AttributeError: module myModule has no attribute multDivSelect。 一、问题描述 参考官方教…

国内智能驾驶芯片领先供应商地平线智能驾驶芯片介绍

地平线国内智能驾驶芯片领先供应商&#xff0c;由国际著名机器学习专家余凯博士于2015年7月创建&#xff1b;2017年12月&#xff0c;地平线即推出了首款 智能芯片征程1和旭日1&#xff1b;2019年8月&#xff0c;宣布量产中国首款车规级智能芯片征程2并于同年10月发 布新一代AIo…

SUS-Chat-34B笔记

名称SUS-Chat: Instruction tuning done right团队南方科技大学、IDEA研究院CCNL团队代码地址https://github.com/SUSTech-IDEA/SUS-Chat简介具有超强多轮对话能力&#xff0c;擅长模仿人类思考过程&#xff0c;在各大榜单上超越同量级的模型。 介绍 SUS-Chat-34B模型是南方科…

用户行为分析是什么?为什么我们需要 bitmap?

本文非常好&#xff1a;https://blog.bcmeng.com/post/doris-bitmap.html meta搜也非常好&#xff1a;https://metaso.cn/ 用户行为分析是什么&#xff1f;简单说&#xff0c;就是围绕全体用户&#xff0c;做各种分析。用户就是一个个的 id。id 在不同方面有各种行为记录&…

查询表中数据(全列/特定列/表达式,where子句(比较/逻辑运算符),order by子句,limit筛选分页),mysql执行顺序

目录 select 全列查询 特定列查询 用表达式查询 (as) 名字 distinct 去重 where子句 比较运算符 列数据之间的比较 ​编辑 别名不能参与比较 null查询 between and in ( ... , ...) 模糊匹配 逻辑运算符 order by子句 可以使用别名 总结mysql执行顺…

自然灾害威力大 北斗预警守护家

从台风强降雨的洪流到山火肆虐&#xff0c;近几年来自然灾害对人民群众造成的伤害越发沉重&#xff0c;我们无法根本上杜绝自然灾害的发生&#xff0c;如果在灾害发生前能够及时准确的播报相关预警信息&#xff0c;给人民群众尽力争取转移的时间&#xff0c;那将可以减免损失&a…

【小沐学AI】Google AI大模型的一点点学习(Python)

文章目录 1、Google AI简介1.1 Google AI Studio1.2 Bard1.3 PaLM1.4 Gemini1.5 Gemini API1.6 Vertex AI1.7 Gemma 2、Google AI开发2.1 快速入门2.1.1 配置开发环境2.1.2 列出所有模型2.1.3 从文本输入生成文本2.1.4 从图像和文本输入生成文本2.1.5 聊天对话 结语 1、Google …