1. Collection,List, Map, Queue

news2024/11/30 0:31:09

1. java集合框架体系结构图

在这里插入图片描述

2. Collection派生的子接口

在这里插入图片描述

其中最重要的子接口是:

1)List
表示有序可重复列表,重要的实现类有:ArrayList, LinkedList
ArrayList特点:底层数组实现,随机查找快,增删慢。
LinkedList特点:底层双向链表实现,不支持随机查找,增删快。

2)Set
表示无序不重复列表, 重要的实现类有:HashSet, TreeSet, LinkedHashSet
HashSet: 最常见的Set实现,底层使用hash表实现。具有非常好的读取和查找性能。
TreeSet: 底层采用平衡二叉搜索树实现(red-black tree)。 元素唯一且有序。用在需要保证元素顺序的场景。
LinkedHashSet: 底层采用hash表和链表实现,链表记录元素的插入顺序。

3)Queue
表示队列, 重要的实现类有:LinkedList, ArrayDeque,PriorityQueue
LinkedList: 除了是一个线性链表,LinkedList也可以用来表示队列,它也实现了Deque(双端对了)接口。
ArrayDeque: 底层使用数组实现的双端队列
PriorityQueue: 即优先级队列,保存队列元素的顺序不是按照插入的顺序,而是按照优先级排序。

3. Map派生的子接口

在这里插入图片描述

其中最重要的实现类有:

1)HashMap, LinkedHashMap, TreeMap
HashMap: 基于hash表的实现(拉链法, 每个bucket中出现hash碰撞时使用链表串联,但为了效率,当链表元素大于8时,升级为red-black tree)

LinkedHashMap: 继承自HashMap, 内部维护了一个链表,用于保存元素的插入顺序(或访问顺序),使用迭代器时可按顺序迭代。

TreeMap: 实现了SortedMap, 能够按key排序。 底层实现时red-black tree。

4. concurrent包新增集合实现类

doug lea在concurrent包中新增了若干有用的集合实现类,主要包括:
1)List
CopyOnWriteArrayList: 一个线程安全的ArrayList版本

2)Set
CopyOnWriteArraySet

3) Queue
ConcurrentLinkedQueue, ConcurrentLinkedDeque: 链表版本队列的线程安全版本

BlockingQueue: 阻塞队列接口,以阻塞的方式插入/取出队列元素,非常有用,常用于生产消费者模式。相关实现类有:ArrayBlockingQueue, LinkedBlockingQueue, PriorityBlockingQueue, SynchronousQueue, TransferQueue, DelayQueue

BlockingDeque: 跟BlockingQueue类似,只是它是一个双端队列。 相关的实现类有: LinkedBlockingDeque

4) Map
ConcurrentHashMap: HashMap的线程安全版本(非常重要的类,面试重点)

ConcurrentSkipListMap: 支持并发的跳表Map,key有序

5. 已废弃接口和实现类

stack, vector, hashtable。 这些都是jdk1.1中的集合类,已经废弃,项目中不要使用。

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

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

相关文章

【FastCAE源码阅读4】VTK OrientationMarkerWidget方向标记组件的使用

FastCAE前处理窗口有个方向指示的组件,会跟踪场景进行旋转,这种设计在很多三维软件都有类似的设计,效果如下图: FastCAE采用的是VTK自带的vtkOrientationMarkerWidget实现的,具体代码如下: void Graph3D…

Springboot在线考试系统 毕业设计-附源码82626

Springboot在线考试系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对在线考试等问题&am…

基于Pytorch框架的LSTM算法(一)——单维度单步滚动预测(2)

#项目说明: 说明:1time_steps滚动预测代码 y_norm scaler.fit_transform(y.reshape(-1, 1)) y_norm torch.FloatTensor(y_norm).view(-1)# 重新预测 window_size 12 future 12 L len(y)首先对模型进行训练; 然后选择所有数据的后wind…

“利用义乌购API揭秘跨境贸易商机:一键获取海量优质商品列表!“

义乌购API可以根据关键词取商品列表。通过调用义乌购API的item_search接口,传入关键词参数,可以获取到符合该关键词的商品列表。 以下是使用义乌购API根据关键词取商品列表的步骤: 注册义乌购开发者账号并获取授权码和密钥。在代码中导入义…

SAP-MM-定义计量单位组

业务场景: 有些物料的计量单位是相同的,为了快速维护物料的计量单位的转换关系,可以创建计量单位组,输入转换关系时,输入组就可以直接转换,不需要单个维护 SPRO-后勤常规-物料主数据-设置关键字段-定义计…

享搭低代码平台:快速构建符合需求的进销存管理系统应用

本文介绍了享搭低代码平台如何赋予用户快速构建进销存管理系统应用的能力。通过在应用商店安装费用进销存管理模板,并通过拖拽方式对模板进行自定义扩充,用户可以快速搭建符合自身需求的进销存管理系统,从而提高管理效率和优化运营。 介绍低代…

shopee、亚马逊卖家如何安全给自己店铺测评?稳定测评环境是关键

大家都知道通过测评可以提升产品的转化率,提升产品的销量,那么做跨境平台的卖家如何安全的给自己店铺测评呢? 无论是亚马逊、拼多多Temu、shopee、Lazada、wish、速卖通、敦煌网、Wayfair、雅虎、eBay、Newegg、乐天、美客多、阿里国际、沃尔…

进销存管理系统如何提高供应链效率?

供应链和进销存系统之间有着密切的联系。进销存系统是供应链管理的一部分,用于跟踪和管理产品的采购、库存和销售。进销存管理是供应链管理的核心流程之一,它有助于提高效率、降低成本、增加盈利,同时确保客户满意度,这对于企业的…

HackTheBox-Starting Point--Tier 1---Ignition

文章目录 一 题目二 实验过程 一 题目 Tags Web、Common Applications、Magento、Reconnaissance、Web Site Structure Discovery、Weak Credentials译文:Web、常见应用、Magento、侦察、网站结构发现、凭证薄弱Connect To attack the target machine, you must …

Docker安装Minio(稳定版)

1、安装 docker pull minio/minio:RELEASE.2021-06-17T00-10-46Z docker run -p 9000:9000 minio/minio:RELEASE.2021-06-17T00-10-46Z server /data 2、访问测试 3、MinIO自定义Access和Secret密钥 要覆盖MinIO的自动生成的密钥,您可以将Access和Secret密钥设为…

干货分享 | 3D WEB轻量化引擎HOOPS Communicator如何读取复杂大模型文件?

HOOPS Communicator是一款简单而强大的工业级高性能3D Web可视化开发包,其主要应用于Web领域,主要加载其专有的SCS、SC、SCZ格式文件;HOOPS还拥有另一个桌面端开发包HOOPS Visualize,主要加载HSF、HMF轻量化格式文件。 两者虽然同…

面向有连接型和面向无连接型

文章目录 面向有连接型和面向无连接型面向有连接型面向无连接型 面向有连接型和面向无连接型 通过网络发送数据,大致可以分为面向有连接与面向无连接两种类型,如下图: 面向有连接型 面向有连接型中,在发送数据之前&#xff0c…

Python Slice函数:数据处理利器详解

引言: 在Python编程中,处理数据是一个非常常见且重要的任务。为了更高效地处理数据,Python提供了许多内置函数和方法。其中,slice()函数是一个非常强大且常用的工具,它可以帮助我们轻松地提取、操作和处理数据。无论是…

无效的标记: --release

一、错误提示: 无效的标记: --release 二、原因 使用的 jdk 版本与所需 jdk 版本不符 三、解决: 1、先排除是否是JDK与SpringBoot的版本不一致导致的:如JDK1.8和SpringBoot3.1.5冲突; 2、检查调整Java编译版本 3、检查Maven环…

MTK 拨打紧急电话接通时间过长问题分析

1、问题分析 从Log视频来看,通话接通时间过长,但是Modem Log来看,进行多两次拨号。 查看AP代码确实进行了两次拨号 AP界面查看确实只有一路通话 查看MTK原始代码,发现当紧急拨号失败后,上层换卡重试,界面不…

yolov8模型训练、目标跟踪

一、准备条件 1.下载yolov8 https://github.com/ultralytics/ultralytics2.安装python https://www.python.org/ftp/python/3.8.0/python-3.8.0-amd64.exe3.安装依赖 进入ultralytics-main,执行: pip install -r requirements.txt pip install -U ul…

chrome 防止http自动转https的方法

1. 左上角,单击地址栏左边 2. 然后点击网站设置 3. 不安全内容改为【允许】 4. 然后以后访问此网站时,就不会再自动跳转为https了

比特币生态的下一个千倍币——CHAX

这两天突然火起来的chax大家关注到了吗? 比特币生态的 如果你羡慕别人ordi赚万倍的收入,你羡慕0风险参与sats铭刻获得10倍以上收益的人,请耐心看完的接下来的内容,如果你不想赚钱,请滑走,原创不易&#x…

Windows如何搭建WebDAV服务并实现公网远程访问内网本地文件?

文章目录 1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访问测试 4. 安装Raidrive客户端4.1 连接WebDav服务器4.2 连接成功4.2 连接成功总结: 自己用Windows Server搭建了家用NAS主机&…

pytorch与cudatoolkit,cudnn对应关系及安装相应的版本

文章目录 一.cuda安装二、nvidia 驱动和cuda runtime 版本对应关系三、安装cudatoolkit,cudnn对应版本四、cuda11.2版本的对应安装的pytorch版本及安装五、相关参考 一.cuda安装 1.确定当前平台cuda可以安装的版本 安装好显卡驱动后,使用nvidia-smi命令可以查看这个…