当前位置: 首页 > news >正文

卷妹带你回顾Java基础每日更新Day12

卷妹带你回顾Java基础每日更新Day12

👩‍💻博客主页:京与旧铺的博客主页

✨欢迎关注🖱点赞🎀收藏⭐留言✒

🔮本文由京与旧铺原创,csdn首发!

😘系列专栏:java学习

👕参考网站:牛客网

💻首发时间:🎞2022年8月22日🎠

🎨你做三四月的事,八九月就会有答案,一起加油吧

🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦

🎧最后的话,作者是一个新人,在很多方面还做的不好,欢迎大佬指正,一起学习哦,冲冲冲

💬推荐一款模拟面试、刷题神器👉点击进入网站

🛒导航小助手🎪

文章目录

  • 卷妹带你回顾Java基础每日更新Day12
  • 🛒导航小助手🎪

多线程场景下如何使用 ArrayList**?**

ArrayList 不是线程安全的,如果遇到多线程场景,可以通过 Collections 的

synchronizedList 方法将其转换成线程安全的容器后再使用。例如像下面这样:

为什么 ArrayList elementData 加上 transient 修饰? ArrayList 中的数组定

义如下:

再看一下 ArrayList 的定义:

可以看到 ArrayList 实现了 Serializable 接口,这意味着 ArrayList 支持序列

化。transient 的作用是说不希望 elementData 数组被序列化,重写了 writeObject 实现:

每次序列化时,先调用 defaultWriteObject() 方法序列化 ArrayList 中的非transient 元素,然后遍历

elementData,只序列化已存入的元素,这样既加快了序列化的速度,又减小了序列化之后的文件大

小。

List Set 的区别

List , Set 都是继承自Collection 接口

List 特点:一个有序(元素存入集合的顺序和取出的顺序一致)容器,元素可以重复,可以插入多个null

元素,元素都有索引。

Set 特点:一个无序(存入和取出顺序有可能不一致)容器,不可以存储重复元素,只允许存入一个null

元素,必须保证元素唯一性。Set 接口常用实现类是

HashSet、LinkedHashSet 以及 TreeSet。

另外 List 支持for循环,也就是通过下标来遍历,也可以用迭代器,但是set只能用迭代,因为他无序,

无法用下标来取得想要的值。

Set和List对比

Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。

List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位

置改变

Set****接口

说一下 HashSet 的实现原理?

HashSet 是基于 HashMap 实现的,HashSet的值存放于HashMap的key上,HashMap的value统一为

PRESENT,因此 HashSet 的实现比较简单,相关 HashSet 的操作,基本上都是直接调用底层

HashMap 的相关方法来完成,HashSet 不允许重复的值。

HashSet****如何检查重复?HashSet是如何保证数据不可重复的?

向HashSet 中add ()元素时,判断元素是否存在的依据,不仅要比较hash值,同时还要结合equles 方法

比较。

HashSet 中的add ()方法会使用HashMap 的put()方法。

HashMap 的 key 是唯一的,由源码可以看出 HashSet 添加进去的值就是作为 HashMap 的key,并且

在HashMap中如果K/V相同时,会用新的V覆盖掉旧的V,然后返回旧的V。所以不会重复( HashMap

比较key是否相等是先比较 hashcode 再比较equals )。

相关文章:

  • UM5006-RT-Thread ART-Pi 数据 flash 擦写手册
  • 【Halcon知识】外轮廓线的算子
  • 能安装Chrome扩展和油猴脚本的手机浏览器
  • 使用Android studio开发一个数独游戏APP 系列第一讲
  • 如何在深度学习中使用自动混合精度训练
  • Linux命令lsscsi详解
  • asp.net webapi 结合Autofac实现程序集动态注入(framework版本)
  • 如何选择合适的进销存管理软件?这几点你需要知道
  • 今日踩坑Maven:omitted for duplicate
  • 时至今日“性能优化”为何依旧成为大厂高工必修
  • 使用谷歌浏览器 devtools 调试node项目
  • 猿创征文 | H5 API之web存储、拖拽事件以及跨文档通信
  • 【数据结构与算法】第六篇:红黑树
  • [Power Query] 分组依据
  • Scala系列从入门到精通(三)
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • Android优雅地处理按钮重复点击
  • Angular Elements 及其运作原理
  • Apache的80端口被占用以及访问时报错403
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Centos6.8 使用rpm安装mysql5.7
  • ES6 ...操作符
  • extjs4学习之配置
  • iOS 系统授权开发
  • js中forEach回调同异步问题
  • Less 日常用法
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 技术发展面试
  • 聊聊flink的BlobWriter
  • 设计模式走一遍---观察者模式
  • 首页查询功能的一次实现过程
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​flutter 代码混淆
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • "无招胜有招"nbsp;史上最全的互…
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • $.ajax,axios,fetch三种ajax请求的区别
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (独孤九剑)--文件系统
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (实战篇)如何缓存数据
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • .bashrc在哪里,alias妙用
  • .md即markdown文件的基本常用编写语法
  • .net 7 上传文件踩坑
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .net6+aspose.words导出word并转pdf