首页 > 编程语言 >Java常见集合类学习笔记

Java常见集合类学习笔记

时间:2023-10-16 15:59:43浏览次数:40  
标签:Java HashMap 笔记 链表 线程 Hashtable 数组 集合 键值

List

1.ArrayList Vector LinkedList区别

​ ArrayList和Vector底层实现基本相同,都是基于数组实现的,只是Vector的方法用synchronized修饰;所以ArrayList是线程不安全的,Vector是线程安全的。

​ LinkedList底层基于双向链表实现,方法没有用synchronized修饰,线程不安全。

2.数组和链表的区别

​ 数组内存连续,随机访问效率高,所以查询和修改效率高;链表内存不连续,增删方便,但是查询和修改效率低;数组和链表组合,就引出了HashSet。

3.HashSet

​ HashSet底层是HashMap,HashSet实际就是HashMap的KeySet; 结构是数组+单向链表或者是数组+红黑树;数据存入的过程:首先对要存入的元素取 hashCode,在利用hashCode和数组长度-1做按位与(&)操作,计算出下 标;如果数组上对应下标的位置没有元素,则存入,如果有元素,则取出元素,构建 链表,并将链表替换到数组对应下标中。如果数组长度和链表长度都到达临 界值,则链表进化为红黑树。

4.LinkedHashSet

​ LinkedHashSet底层是LinkedHashMap, LinkedHashSet实际就是LinkedHashMap的KeySet;结构是数组+双向链表,实现有序插入

5.HashMap和Hashtable的区别

​ Hashtable底层是数组+单向链表,HashMap底层是数组+单向链表+红黑树。HashMap线程不安全,Hashtable线程安全。HashMap键值允许为null, Hashtable键值不允许为null。

6.Properties

​ Properties继承于Hashtable,操作类似。

集合实现类的选择

  1. Collection
    1. 允许重复:List
      1. 增删多:LinkedList
      2. 查改多:ArrayList(线程不安全)Vector(线程安全)
    2. 不允许重复:Set
      1. 无序:HashSet
      2. 排序:TreeSet
      3. 插入和取出顺序一致:LinkedHashSet
  2. Map
    1. 键值无序:HashMap
    2. 键值排序:TreeMap
    3. 键值插入和取出顺序一致:LinkedHashMap
    4. 读取文件:Properties

标签:Java,HashMap,笔记,链表,线程,Hashtable,数组,集合,键值
From: https://www.cnblogs.com/marchxd/p/17767495.html

相关文章

  • Shell脚本学习笔记
    导航目录导航Shell脚本入门脚本格式第一个Shell脚本helloworldShell中的变量系统变量常用系统变量案例实操自定义变量基本语法变量定义规则案例实操特殊变量$n基本语法案例实操特殊变量$#基本语法案例实操特殊变量$*、$@基本语法案例实操特殊变量$?基本语法案例实操运算符基本语......
  • Java大文件上传详解及实例代码
    前言:上周遇到这样一个问题,客户上传高清视频(1G以上)的时候上传失败。一开始以为是session过期或者文件大小受系统限制,导致的错误。查看了系统的配置文件没有看到文件大小限制,web.xml中seesiontimeout是30,我把它改成了120。但还是不行,有时候10分钟就崩了。同事说,可能是客户这里服......
  • LCA学习笔记
    定义最近公共祖先简称LCA(LowestCommonAncestor)。两个节点的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个。求法有多种求法,目前就学习了倍增和dfs序求LCA,等后面学新的了再加上。前置知识:ST表,dfs序。为方便说明,下面全都是求\(x\),\(y\)的LCA,设其为\(z......
  • java -jar命令及SpringBoot通过java -jav启动项目的过程
    本篇文章将为大家讲述关于SpringBoot项目工程完成后,是如何通过java-jar命令来启动的,以及介绍java-jar命令的详细内容,对SpringBootjava-jav启动过程感兴趣的朋友跟随小编一起看看吧本篇文章将为大家讲述关于SpringBoot项目工程完成后,是如何通过java-jar命令来启动的......
  • Java 常用中间件
    Java常用中间件1、网关Nginx、Kong、Zuul、Gateway2、缓存Redis、MemCached、OsCache、EhCache3、搜索ElasticSearch、Solr4、熔断Hystrix、resilience4j5、负载均衡DNS、F5、LVS、Nginx、OpenResty、HAproxy6、注册中心Nacos、Eureka、Zookeeper、Redis、Etcd、Cons......
  • java实现大文件传输
    简介在现代互联网中,我们经常需要传输大文件,例如视频、音频或者大型数据文件。传输大文件需要考虑诸多因素,例如网络延迟、带宽限制和传输安全性。在本文中,我们将介绍如何使用Java实现大文件传输,并提供相应的代码示例。文件传输协议在进行大文件传输之前,我们需要选择合适的传输协议......
  • Vue学习笔记(十一):路由管理
      1Vue路由基本使用¶1.1安装¶Vue中默认并不提供路由功能,需要安装其插件Vue-router,如下所示,其中“@3”表示安装版本[email protected]创建路由¶在src目录下创建路由文件目录,目录名为“router”,并在该目录下创建“index.js”文件,文件内容如下所示,代码......
  • Security Reduction学习笔记(2):预备知识(群环域,双线性配对,哈希函数)
    省略部分可参考密码协议学习笔记(1.4):密码学的一些数学基础-Isakovsky-博客园(cnblogs.com)有限域:$\mathbb{F}$是有限个元素的集合若$(\mathbb{F},+,*)$满足某些条件(条件略),则称其为有限域(FiniteField,或称Galois域)其零元,单位元分别记为$0_{\mathbb{F}},1_{\mat......
  • java导出占位符word模板
    实际项目中,便于维护模板,采用直接word里面制作占位符来导出更为直观,而不是将word做成tpl模板。使用XWPFDocument(这种解析xlsx或者docx)和HWPFDocument(这种解析xls或者doc)。代码如下:写磁盘代码:点击查看代码//创建Word模板文件:在开始代码编写之前,我们需要准备一个Wor......
  • 《Mastering the FreeRTOS Real Time Kernel》读书笔记(5)中断管理
    6.中断管理在读这一章之前一直有一些疑惑,FreeRTOS中的中断是软中断吗,还是将外部硬中断的触发后,导入FreeRTOS的内部进行调度处理。如果是第一种,软中断和第三章讲的任务有区别吗,还是只是优先级比所有任务高。如果是第二种的话,外部中断的服务函数是不是不能写内容了,FreeRTOS的运行和......