Java开发-面试题-0003-List、Set 和 Map的区别

Java开发-面试题-0003-List、Set 和 Map的区别

更多内容欢迎关注我(持续更新中,欢迎Star✨)

Github:CodeZeng1998/Java-Developer-Work-Note

技术公众号:CodeZeng1998(纯纯技术文)

生活公众号:好锅(Life is more than code)

CSDN: CodeZeng1998

其他平台:CodeZeng1998好锅

List、Set 和 Map的区别:

  • 基本特性
    • List
      • 有序集合,可以包含重复元素。
      • 每个元素都有索引,通过索引可以访问元素。
    • Set
      • 无序集合,不允许包含重复元素。
      • 每个元素都是唯一的。
    • Map
      • 键值对的集合,不允许键重复
      • 每个键关联一个值,可以通过键来访问对应的值。
  • 常用实现
    • List
      • ArrayList、LinkedList、Vector
    • Set
      • HashSet、LinkedHashSet、TreeSet
    • Map
      • HashMap、LinkedHashMap、TreeMap、Hashtable
  • 元素访问
    • List
      • 通过索引访问元素,支持随机访问。
      • 在 ArrayList 中通过索引访问元素的时间复杂度为 O(1),在 LinkedList 中为 O(n)。
    • Set
      • 没有索引,不能通过索引访问元素。
      • 需要通过迭代器或增强 for 循环遍历。
    • Map
      • 通过键访问对应的值,支持高效的键值查找。
      • 在 HashMap 中查找键的时间复杂度为 O(1), 在 TreeMap 中 为 O(log n)。
  • 插入和删除
    • List
      • 在列表末尾进行插入和删除操作高效。
      • 在 ArrayList 中间位置插入和删除操作效率低,因为需要移动元素。在 LinkedList 中任意位置插入和删除操作较高效,但查找元素位置效率低,因为需要逐一遍历。
    • Set
      • 插入和删除操作效率较高。
      • 在 HashSet 中插入和删除的时间复杂度为O(1),在 TreeSet 中为O(log n)。
    • Map
      • 插入和删除键值对操作效率较高。
      • 在 HashMap 中插入和删除键值对的时间复杂度为O(1),在 TreeMap 中为 O(log n)。
  • 重复元素
    • List
      • 允许包含重复元素
    • Set
      • 不允许包含重复元素。如果尝试添加重复元素,添加操作将失败。
    • Map
      • 键不允许重复。值可以重复。
  • 顺序
    • List
      • 维护元素的插入顺序
    • Set
      • 大多数实现(如 HashSet)不维护顺序, LinkedHashSet 维护插入顺序, TreeSet 按自然顺序或指定的比较器顺序排序。
    • Map
      • HashMap 不维护顺序,LinkedHashMap 维护插入顺序,TreeMap按自然顺序或指定的比较器顺序排序。
  • 用途
    • List
      • 适用于需要按特定顺序访问元素或需要频繁按索引访问元素的场景。
    • Set
      • 适用于需要保证元素唯一性或需要快速查找元素的场景。
    • Map
      • 适用于需要通过键值对进行快速查找、插入和删除操作的场景。
  • 内存和使用
    • List
      • 内存使用取决于具体实现。ArrayList 相对高效,因为它只存储元素的值。LinkedList由于存储了节点的引用,内存开销较大。
    • Set
      • 内存使用取决于具体实现。HashSet 通常比 TreeSet 内存开销小,因为 TreeSet 需要维护红黑树结构。
    • Map
      • 内存使用取决于具体实现。HashMap 通常比 TreeMap内存开销小,因为 TreeMap 需要维护红黑树结构。

总的来说,选择 List、Set 还是 Map 取决于具体需求,例如是否需要允许重复元素、是否需要维护顺序、是否需要快速查找和删除、是否需要键值对的映射等。

在这里插入图片描述

上图由 Pic 生成

更多内容欢迎关注我(持续更新中,欢迎Star✨)

Github:CodeZeng1998/Java-Developer-Work-Note

技术公众号:CodeZeng1998(纯纯技术文)

生活公众号:好锅(Life is more than code)

CSDN: CodeZeng1998

其他平台:CodeZeng1998好锅

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

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

相关文章

一个小时搞定JAVA面向对象(4)——继承

文章目录 继承继承中,成员变量和成员方法的访问特点当子类和父类的成员变量不重名:当子类和父类的成员变量重名: 成员方法方法的重写方法重写注意事项 final、Supre和this关键字final关键字final关键字修饰变量final关键字修饰方法 super的使用方法this的使用方法继承的特点 继…

BioPorto胰高血糖素样肽-1抗体(GLP-1)

丹麦BioPorto Diadnostics公司致力于提供世界领先的GLP-1抗体。基于结合GLP-1位点的不同,他们筛选出了不同的抗GLP-1抗体。有的抗体可以同时结合GLP-1的活性形式和非活性形式,有的专门结合生物活性形式的GLP-1。在开发和检测GLP-1相关治疗的过程中&#…

deepin 社区月报 | 2024年5月,deepin V23 RC 正式发布,校园联盟走进海外!

deepin(深度)社区5月总览 2024年5月,有1052位小伙伴加入了deepin(深度)社区大家庭,目前共有论坛伙伴154962位; 在5月,deepin V23 正式发布了RC版本,在本次发布的RC版本…

最新版点微同城源码34.7+全套插件+小程序前后端

带全套插件 自己耐心点配置一下插件 可以H5可以小程序 一款专属的同城服务平台对于企业和个人而言,无疑是拓展业务、提升服务品质的重要一环。点微同城源码搭配全套插件,以及完善的小程序前后端,将为您的业务发展提供强大支持 源码免费下载…

黑马程序员——Spring框架——day04——SpringMVC基础

目录: SpringMVC简介 背景SpringMVC概述技术体系定位快速入门 目的需求步骤代码实操测试工具 PostMan简介PostMan安装PostMan使用知识点总结请求与参数处理 请求路径 环境准备问题分析解决方式请求方式 环境准备技术分析参数 基本数据类型POJO嵌套POJO数组集合&…

【面试题-015】Redis的线程模型是什么 为什么速度快

redis面试题 Redis的线程模型是什么 为什么速度快? Redis是一个开源的、高性能的键值对(key-value)数据库。它之所以速度快,主要得益于以下几个方面的设计: 单线程模型: Redis的操作是单线程的&#xff…

【JAVA |总结】JAVASE基础大总结(含思维导图)

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 🎈丠丠64-CSDN博客🎈 ✨✨ 帅哥美女们,我们共同加油!一起…

Excel的VLOOKUP函数的用法

由于工作需要,最近用Excel的时候比较多,遇到一个需求,刚好需要用到VLOOKUP函数,结果由于对参数的理解不清晰,导致折腾了很久,都没达到想要的效果。所以,这里特此就遇到的坑做一个记录&#xff0…

libavformat 版本 - 讨论

https://chatgpt.com/share/c1bb8074-2398-4f41-b0c0-591c474ec588 1 需要libavformat库。 在win下版本是60 在Linux下版本是58 都可以编译通过。 这样可以吗? 在项目中同时使用libavformat的两个不同版本(Windows上使用版本60,Linux上使用版本58)是可以的,但需要注意一…

mybatis-plus使用教程

mybatis-plus使用配置 代码仓库:https://github.com/Kingsea442/mybatis-plus-demo 使用mybatis-plus简化数据库操作 1. 增加记录 Autowiredprivate UserMapper userMapper;Testpublic void testInsertUser() {User user new User();user.setUserName("wan…

c++实现机房预约管理系统

//computerRoom.h #pragma once #include <iostream> using namespace std;//机房类 class ComputerRoom { public:int m_ComId;//机房Id号int m_MaxNum;//最大容量}; //globalFile.h #pragma once//管理员文件 #define ADMIN_FILE "admin.txt" //学生文件 …

A+B Problem

题目描述 高精度加法&#xff0c;相当于 ab problem&#xff0c;不用考虑负数。 输入格式 分两行输入。a,b≤10^500。 输出格式 输出只有一行&#xff0c;代表 ab 的值。 代码 #include <iostream> #include <string> using namespace std; int k[10086]; i…

如何规划企业钓鱼邮件演练?

为什么要开展网络钓鱼演练 相信在甲方工作的信息安全工程师都知道&#xff0c;定期对公司员工进行安全意识培训是我们的工作内容之一&#xff0c;目的也很明确&#xff0c;通过安全意识培训来改变员工的不安全行为&#xff0c;降低人的风险。根据网络安全问题起源数据分析&…

内部协变量偏移问题(有无BN的代码比较)

1.什么是内部协变量偏移问题&#xff1a; 比如1000条数据&#xff0c;batch_size4&#xff0c;相当于要练250批次&#xff0c;当第一次批次的4条数据进行模型的训练时&#xff0c;此时网络学习动态已经养成&#xff0c;当第二批次进行训练时&#xff0c;极大可能导致差异较大&…

多模态融合目标检测新SOTA!推理速度提升2.7倍,实现最先进性能

为解决传统目标检测在复杂环境下效果不佳等问题&#xff0c;研究者们提出了多模态融合目标检测。 通过整合来自多个传感器的数据&#xff0c;充分利用不同传感器的优点&#xff0c;多模态融合目标检测能够更全面地捕捉目标信息&#xff0c;显著提高检测的准确性和鲁棒性&#…

弘君资本策略:短期博弈情绪边际降温 关注这四条线索

弘君资本指出&#xff0c;随着商场进入地产政策调查期&#xff0c;短期博弈情绪边沿降温&#xff0c;注重景气边沿改善和工业政策指向的结构性头绪。一是受供应侧节能降碳影响且可继续的提价链&#xff1b;二是获益于全球制造业向上的出口制造链&#xff1b;三是具有全球竞争力…

深度解析:5月17日房地产新政及其市场影响

5月17日&#xff0c;中国房地产市场迎来了一系列重要的政策调整&#xff0c;旨在从供需两端同时发力稳定房地产市场。地方政府收回闲置土地和收购库存商品房作保障房的“收储”政策&#xff0c;在中央层面是首次提及&#xff0c;央行也配套设立了3000亿元的保障性住房再贷款。这…

软设之希尔排序

假设有n个元素&#xff0c;先取一个小于n的整数d1作为一个增量&#xff0c;把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组中进行直接插入排序;然后&#xff0c;取第二个增量d2<d1重复上诉的分组和排序&#xff0c;直到所取得增量dt1&#…

隐藏饼图的legend,重写legend列表。

因为要实现的饼图效果较复杂,所以,需要重新写列表。 点击右侧列表的圆点,实现隐藏左侧饼图相应环状。 // 饼图,点击自定义列表,显示和隐藏饼图对应的环状数据<template> <div class="index_div"> <a-spin :spinning="aLoading">&l…

fastapi框架搭建的python项目,实现链接数据库,实现用户的登录和注册

好的&#xff0c;下面是重新整理后的完整实现&#xff0c;包含你的 database.py 配置。 1. 安装依赖 确保安装了 FastAPI, SQLAlchemy, psycopg2-binary, PassLib 和 PyJWT 库&#xff1a; pip install fastapi sqlalchemy psycopg2-binary passlib[bcrypt] pyjwt2. 配置数据…