java中的三大集合类各自的特点以及适用场景

news2024/10/7 8:31:34

目录

​编辑

 三大容器的介绍

 使用场景介绍

List 实现类

Map 实现类

Set 实现类:


 三大容器的介绍

  1. List(列表)

    • 结构:由有序的元素序列组成,可以包含重复元素
    • 特点:可以通过索引访问元素,插入的顺序与遍历顺序一致
    • 常见实现类:ArrayList、LinkedList、Vector
  2. Map(映射)

    • 结构:由键值对(Key-Value)对组成的集合,键唯一,值可以重复
    • 特点:通过键快速查找值,不保证插入顺序,每个键唯一
    • 常见实现类:HashMap、TreeMap、LinkedHashMap、Hashtable
  3. Set(集合)

    • 结构:由唯一元素组成的集合
    • 特点:不允许重复元素,没有索引概念,不保证插入顺序
    • 常见实现类:HashSet、TreeSet、LinkedHashSet

 使用场景介绍

list下面所有的类都是有序的,并且是可以重复的

set适合在要求去重的情况下使用,他并不能保证顺序,但是LinkedHashSet是可以保证插入时的顺序的

map适用于去重,和计算相的值出现的次数,hashmap可以去重但是不能保证顺序,可以选用LinkedHashMap去重的同时保证了key的顺序,TreeMap是可以去重的同时 按照大小进行排序

List 实现类

  • ArrayList:基于数组的实现,支持快速随机访问和遍历。适用于需要频繁访问元素和对列表进行大量随机访问的场景。
  • LinkedList:基于链表的实现,支持高效的插入和删除操作。适用于需要频繁进行插入和删除操作的场景。
  • Vector:与 ArrayList 类似,但是是线程安全的。适用于多线程环境下需要安全操作的场景,但相比 ArrayList 会有一定的性能开销。

Map 实现类

  • HashMap:基于哈希表的实现,提供快速的插入、删除和查找操作。不保证元素的顺序,在大多数场景下具有良好的性能。
  • TreeMap:基于红黑树的实现,按照键的自然顺序或自定义顺序进行排序。适用于需要按照顺序遍历键值对的场景。
  • LinkedHashMap:在 HashMap 的基础上维护了一个双向链表,保持元素的插入顺序或者访问顺序。适用于需要保持插入顺序或访问顺序的场景。
  • Hashtable:与 HashMap 类似,但是是线程安全的。适用于多线程环境下需要安全操作的场景,但相比 HashMap 会有一定的性能开销。

Set 实现类:

  • HashSet:基于哈希表的实现,提供快速的插入、删除和查找操作。不保证元素的顺序。
  • TreeSet:基于红黑树的实现,按照元素的自然顺序或自定义顺序进行排序。适用于需要按照顺序遍历元素的场景。
  • LinkedHashSet:在 HashSet 的基础上维护了一个双向链表,保持元素的插入顺序或者访问顺序。适用于需要保持插入顺序或者访问顺序的场景。

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

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

相关文章

SQL注入实操(更新中)

文章目录 一、sqli-lab靶场搭建二、通关笔记1.Less-1a.单引号‘b.updatexmlc.concatd.unione.information_schemaf.GROUP_CONCATg.select 1,2 2.Less-23.Less-3a.怎么找到注入点b.判断SQL注入漏洞的类型c.闭合语句d.如何判断显示位e.答案 4.Less-45.Less-5a.判断注入漏洞的依据…

PhpStudy2016-2018-RCE 漏洞复现

漏洞描述 PHPStudyRCE(Remote Code Execution),也称为phpstudy_backdoor漏洞,是指PHPStudy软件中存在的一个远程代码执行漏洞。 漏洞影响范围 Phpstudy软件是国内的一款免费的PHP调试环境的程序集成包,通过集成Apac…

WEB:shrine

背景知识 了解Flask SSIT模板注入 题目 进行代码审计 import flask import osapp flask.Flask(__name__) /*创建了flask包下的Flask类的对象,name是一个适用于多数情况的快捷方式。有了这个参数,Flask才知道在哪里可以找到模板和静态文件*/app.confi…

HYPE分布式水文模型教程

详情点击链接:HYPE分布式水文模型建模方法与案例分析 前言 HYPE(Hydrological Predictions for the Environment, HYPE)是由瑞典皇家水文气象局(SMHI)在HBV和HBV-NP模型基础上开发的新一代分布式水文模型,已经在全球众多地区得…

同样是办公管理系统,钉钉和OA哪个更出色?

企业在选择办公协同系统的时候,通常搜索到“钉钉”和“OA系统”,两者都属于办公管理类型,但哪个更适合企业使用?两者又有哪些区别呢?小编整理了一下两者的对比和侧重的点,今天我们就来聊聊两者的区别吧~ 天…

【Linux】inode软硬连接

文章目录 📖 前言1. 文件系统1.1 磁盘的物理结构:1.2 CSH和LBA:1.3 IO的基本单位:1.4 文件系统结构:1.5 认识inode: 2. 软硬连接2.1 目录和文件的硬连接数:2.2 软连接:2.3 硬连接&am…

Clickhouse基础和基本优化

CK基础和基本优化 一、ClickHouse的特点列式存储高吞吐写入能力数据分区与线程级并行表引擎的使用MergeTreeReplacingMergeTreeSummingMergeTree 二、SQL操作1.Insert2.Update 和 Delete3.查询操作4.alter操作5.导出数据 三、基于表的分布式集群集群写入流程( 3分片…

react和vue2/3父子组件的双向绑定(sync、emit、v-model)

目录 Vue .sync(2.3.0) $emit (2.3后) 自定义组件的 v-model 2.2.0 v-modelemits(3.0取消了.sync) React 父组件回调函数 相关基础 框架 MVC (Model View Controller)/MVP(Model View…

VirtualBox 7.0.10 (macOS, Linux, Windows) - 开源跨平台虚拟化软件

VirtualBox 7.0.10 (macOS, Linux, Windows) - 开源跨平台虚拟化软件 Oracle VM VirtualBox 7 请访问原文链接:https://sysin.org/blog/virtualbox-7/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 2022 年 10 月…

CentOS7中安装Mysql8并配置远程连接和修改密码等

场景 使用Vmware等虚拟机软件搭建CentOS7系统,需要在其上安装Mysql8版本数据库。 注: 博客:霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主 实现 1、去mysql官网手动下载rpm包并上传到服务器,或者直接通过wget…

Python结合Selenium简单实现Web自动化测试

这篇文章是入门级别的应用Python Selenium进行自动化测试,包括环境搭建及简单的实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 这篇文章是入门级别的应用Python Selenium进行自动化测试,包括环境搭建及简单的实例。基…

数据库及数据表的相关操作(一)

目录 一、管理逻辑库与数据表二、常用数据类型和约束2.1 数字数据类型2.2 字符串数据类型2.3 日期数据类型2.4 字段约束 三、索引运行机制和使用原则3.1 创建索引3.2 添加与删除索引3.3 索引的使用原则 一、管理逻辑库与数据表 sql语言的分类: ​ DML数据操作语言…

linux之Ubuntu系列(四)用户管理 用户和权限 chmod 超级用户root, R、W、X、T、S 软链接和硬链接 shell

r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。 w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移…

linux之Ubuntu系列(-)常见指令 重定向

Ubuntu 中文 版本 注意点 通过修改语言改成英文 在终端录入:export LANGen_US 在终端录入:xdg-user-dirs-gtk-update 单用户和多用户 命令格式 command [-选项] [参数] –查看命令的帮助 命令 --help man 命令 |操作键| 功能| |空格键|-显示手册的下…

Kafka 入门到起飞系列 - 生产者发送消息流程解析

生产者通过producerRecord 对象封装消息主题、消息的value(内容)、timestamp(时间戳)等 生产者通过send()方法发送消息,send()方法会经过如下几步 1. 首先将消息交给拦截器(Interceptor)处理, 拦截器对生产者而言&…

Java编程-IDEA中Java的main方法psvm、sout快捷键设置

目的 我打出psvm这四个字母时,可快速打出main方法 我打出syso,sout时,可快速打出System.out.println(); 步骤: 1、打开IDEA,点击文件,选择Editor中的 Live Templates选项,点击右侧边栏中的 号 2、选中…

教你用Python+selenium搭建自动化测试环境

今天给大家带来的是关于Python的相关知识,文章围绕着如何用Pythonselenium搭建自动化测试环境展开,文中有非常详细的介绍,需要的朋友可以参考下 一、环境搭建 1、安装pythonpycharm软件 。python安装网址官网:About Python™ | Python.org 根据自己的电脑系统选择…

设计模式 ~ 发布订阅模式

概念 用于实现对象之间的松耦合通信; 在该模式中,存在一个或多个发布者(Publishers)和一个或多个订阅者(Subscribers); 发布者负责发布消息,而订阅者负责订阅感兴趣的消息并在接收到…

Java中高级面试题,开发模拟练习

1.Redis为什么这么快? Redis是单线程的,避免了多线程的上下文切换和并发控制开销;Redis大部分操作时基于内存,读写数据不需要磁盘I/O,所以速度非常快;Redis采用了I/O多路复用机制,提高了网络I/O并发性;Redis提供高效的数据结构&…

数据科学团队的角色分工

描述数据科学团队中角色分工常用下列维度。进一步以数据可视化直观表达的能力雷达图: ML Ops - 机器学习运维 Data Pipelines - 数据流水线 Database - 数据库 Data Viz - 数据可视化 Storytelling - 数据讲故事 Business Insights - 业务洞察 Reporting - 报告 Experimentatio…