android 集合总结

1 集合分类,

collection和map两大类,Iterator接口是提供遍历任何Collection的接口,不是map


2 集合类的底层实现 

  hashset基于hashmap实现(只不过HashSet里面的HashMap所有的value都是同一个Object而已)
  treeset由红黑树实现
  hashmap由数组+链表+红黑树实现
  其他集合类基本都是由数组,或链表实现
 

3 arraylist 每次都是10的1.5倍扩容,会造成内存的浪费,可以考虑优化

  hashmap 是2的幂次方扩容
  对于hashmap或hashset最好定义key类是不可变的,这样key对应的hashCode() 值可以被缓存起    来,性能更好,这也是为什么String,Integer特别适合作为HashMap的key
  他们都是重写过hashcode和equal方法的,且这些包装类都是final修饰的:
  public final class Integer extends Number
  
  为什么要重写hashcode和equals 
  默认:hashcode是对地址的散列值 和equals是对地址的比较
  对象比较先比较hashcode,相同再去比较equals,
  所以 如果重写了equals将地址的比较改为内部某个属性值的比较
  那么还是先比较的是hashcode,即基于地址的散列值,所以要同步重写
  hashcode也变为基于某个属性值的散列值的比较才行。
  
 4 线程安全

  ConcurrentHashMap 是线程安全的,实现JDK1.8底层是synchronized+CAS+链表/红黑树,       JDK1.7底层是ReentrantLock+Segment+HashEntry
  但线程安全的都不支持key为null
  Iterator接口方便遍历。删除,修改,要用它,不然会ConcurrentModificationException,当然你    也可以倒序遍历等等

  使用线程不安全的集合要加同步锁,不然也会报ConcurrentModificationException错误
  掌握这些,应该就够了。

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

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

相关文章

什么是根据人类反馈的强化学习Reinforcement Learning with Human Feedback(RLHF)?

基于人类反馈的强化学习(Reinforcement learning with human feedback)是近年来越来越受欢迎的一种前沿技术,用于提高大型语言模型的性能。这是种使用人类反馈训练这些模型的有效方法,而该方法的输入组件与搜索评估也有诸多相似之…

[Flutter]环境判断

方式一(推荐) 常量kReleaseMode,它会根据你的应用是以什么模式编译的来获取值。bool.fromEnvironment会从Dart编译时的环境变量中获取值。对于dart.vm.product这个特定的环境变量,它是由Dart VM设置的,用来标明当前是…

【Android 源码】Android源码下载指南

文章目录 前言安装Repo初始化Repo选择分支没有梯子替换为清华源 有梯子 下载源码下载开始参考 前言 这是关于Android源码下载的过程记录。 环境:Windows上通过VMware安装的Ubuntu系统 安装Repo 创建Repo文件目录 mkdir ~/bin PATH~/bin:$PATH下载Repo工具&#…

回文子串 每日温度 接雨水

647. 回文子串 力扣题目链接 如果s【i】和s【j】相同 dp【i1】【j-1】也是回文串的话 (等于true) 那么dp【i】【j】也是回文串 true 定义一个bool二维数组 遍历顺序是从下到上 从左到右 因为dp【i】【j】是通过dp【i1】【j-1】推出来的 i从最后一…

【漏洞复现】用友U8Cloud nc.bs.sm.login2.RegisterServlet SQL注入漏洞

0x01 产品简介 用友U8 Cloud是用友推出的新一代云ERP,主要聚焦成长型、创新型企业,提供企业级云ERP整体解决方案 0x02 漏洞概述 用友U8Cloud nc.bs.sm.login2.RegisterServlet接口处存在SQL注入漏洞,未授权的攻击者可通过此漏洞获取数据库权限,从而盗取用户数据,造成用…

OpenGL 实现“人像背景虚化“效果

手机上的人像模式,也被人们称作“背景虚化”或 ”双摄虚化“ 模式,也称为 Bokeh 模式,能够在保持画面中指定的人或物体清晰的同时,将其他的背景模糊掉。突出画面的主体部分,主观上美感更强烈。 人像模式的一般实现原理是,利用双摄系统获取景深信息,并通过深度传感器和图…

WorkPlus智能AI助理:定制化部署,拓展企业协作新境界

近年来,随着人工智能技术不断发展,智能助理在企业管理中发挥着日益重要的作用。其中,WorkPlus智能AI助理作为一款支持私有化部署的新一代智能助理软件,为企业内部协作场景带来了全新的可能性。通过结合企业自身的行业知识和应用场…

英伟达推出“地表最强AI芯片”

B站:啥都会一点的研究生公众号:啥都会一点的研究生 近期AI相关资讯,一起看看吧~ Neuralink首位脑芯片患者用意念下棋 埃隆-马斯克(Elon Musk)的脑芯片初创公司 Neuralink 展示了其首位脑芯片患者仅用意念下棋的情景…

VMware vSAN OSA存储策略 - 基于虚拟机的分布式对象存储

简介 博客:https://songxwn.com/ 存储策略 (Storage Policy) 是管理员定义的一组规则,这组规则定义了数据对象在 vSAN 存储上是如何保存的,存储策略定义了数据存储的可靠性、访问性能等特性。vSAN 提供了基于存储策略的存储管理 SPBM (Stor…

基于java实现的高校二手交易平台

开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclip…

无服务数据库是未来的趋势吗?

无服务数据库是未来的趋势吗? 无服务器数据库是未来的趋势吗?无服务器数据库与传统云数据库有何不同? Amazon Aurora Serverless(如下图所示)是 Amazon Aurora 的一种配置方式,可以按需自动扩展。 Aurora…

针对ETC系统的OBE-SAM模块设计方案

ETC系统组成及工作原理 ETC系统由前端系统和后台数据库系统组成,总体的架构如下图所示: 前端系统包含安装在汽车挡风玻璃上的车载单元(On Board Unit,简称OBU)、路侧单元(Roadside Unit,简称RS…

深入解析Spring MVC: 原理、流程【面试版】

什么是SpringMV? 1.是一个基于MVC的web框架; 2.是spring的一个模块,是spring的子容器,子容器可以拿父容器的东西,但是反过来不可; 2.SpringMVC的前端控制器是DispatcherServlet,用于分发请求。使开发变…

python--切片

1.切片: 切片是编程语言为有序序列(sequence)准备的,用来切割或者截取某个片段 一个完整的切片是包含三个参数和两个冒号" : " ,用于分隔三个参数(start_index、end_index、step)。当只有一个“:”时,默认第…

深度学习(三)vscode加jupyter notebook插件使用

0.前言 哎呀,我本次的实验是在新电脑上使用的,之前的笔记本上的环境什么的我都是很久以前弄好了的,结果到了新电脑上我直接忘了是该怎么配的了,不过万幸,花了点时间,查查补补,现在总算是可以了。…

elasticsearch 6.8.x 索引别名、动态索引扩展、滚动索引

文章目录 引言索引别名(alias)创建索引别名查询索引别名删除索引别名重命名索引别名 动态索引(index template,动态匹配生成索引)新建索引模板新建索引并插入数据索引sys-log-202402索引sys-log-202403索引sys-log-202…

Llama模型下载

最近llama模型下载的方式又又变了,所以今天简单更新一篇文章,关于下载的,首先上官网,不管在哪里下载你都要去官网登记一下信息:https://llama.meta.com/llama2 然后会出现下面的信息登记网页: 我这里因为待…

MoonBit MeetUp回顾——狼叔:我在期待下一个十年,目前没有找到更好的方向,所以从月兔开始!

狼叔在他的发言中,分享了自己对前端与后端技术、个人职业发展的思考,以及对独立开发者和技术栈变化的探索。 狼叔讲述了在大厂工作的经验,包括面对裁员和职业焦虑的挑战。狼叔强调了编码技能的重要性:“首先,编码是一项…

【LeetCode热题100】236. 二叉树的最近公共祖先(二叉树)

一.题目要求 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可…

[SpringCloud] Feign Client 的创建 (一) (四)

文章目录 1.FeignClientsRegistrar2.完成配置注册2.1 registerDefaultConfiguration方法2.2 迭代稳定性2.3 registerFeignClients方法 1.FeignClientsRegistrar FeignClientsRegistrar实现ImportBeanDefinitionRegistrar接口。 2.完成配置注册 public void registerBeanDefinit…