当前位置: 首页 > news >正文

【Java-一些常见单列集合面试问题】

目录

1.List,Set的区别?

2.ArrayList与Vector区别? 

3.Arraylist与LinkedList区别?

4.ArrayList的扩容机制?

5.HashSet、LinkedHashSet和TreeSet 区别?

6.HashSet如何过滤重复元素?


1.List,Set的区别?

List:集合中存储的元素是有序的,元素可以重复,可以进行排序操作。
Set:集合中存储的元素不可重复的

2.ArrayList与Vector区别? 

 ArrayList 与Vector 都是基于动态数组实现的 List 接口的集合实现类,它们的区别主要包括:
1.初始容量:
        ArrayList初始默认容量为0,添加第一个元素时,扩容为10
        Vector 初始默认容量为:10
2.扩容方式:
        ArrayList:在原有容量基础上,扩容0.5倍(新容量是原有容量的1.5倍);
        Vector:在原有容量基础上,扩容1倍(新容量是原有容量的2倍);
3.线程安全
        ArrayList:线程不安全(可使用 CopyOniriteArrayList 集合解决);
        Vector:线程安全,操作方法使用 synchronized(同步锁)实现线程同步:
4.执行效率:
        Vector的方法都有同步锁,在方法执行时需要加锁、解锁,所以性能会低于 ArrayList;

3.Arraylist与LinkedList区别?

ArrayList 与LinkedList都是 List 接口的集合实现类,它们的区别主要包括:
1.底层数据结构:
        Arraylist:底层使用的Object[]数组:
        LinkedList :底层使用的是双向链表
2.插入和删除元素:
        ArrayList:插入删除时需要复制数组内的元素,所以性能较差:查找和遍历元素:
        LinkedList:插入删除时,只影响相邻节点,所以性能较高:
        ArrayList:插入删除时需要复制数组内的元素,所以性能较差:
        LinkedList:插入删除时,只影响相邻节点,所以性能较高;
3.RandomAccess 接口:
        使用Collections.binarySearch()方法,基于二分查找法,进行元素查找时: 

        Arraylist:实现了 RandonAccess 接口,使用 indexedBinarySearch()(基于下标的二分查找),性能较好;
        LinkedList :没有实现 RandonAccess 接口,使用 iteratorBinarySearch()(基于迭代器的二分查找),迭代器会产生额外遍历操作,性能较差:

4.ArrayList的扩容机制?

1.构造函数初始化时
        使用无参数构造方法创建 Arraylist 时,内部的动态数组被初始化为一个空数组。当向数组中添加第一个元素时,数组容量扩为 10;
        使用有参数构造方法创建 ArrayList 时,内部的动态数组按照指定容量进行初始化创建
2.添加元素容量不足时
        当数组容量不足时,调用grow()方法进行扩容,每次扩容后容量都会变为原来的1.5倍(在原有容量基础上,扩容0.5倍);
        扩容后,数组的最大容量不会超过 Integer.MAX_VALUE; 

5.HashSet、LinkedHashSet和TreeSet 区别?

 它们都是Set接口的实现类,区别主要包括:
        HashSet:基于 HashMap实现,元素唯一,无序:
        LinkedlashSet:HashSet 的子类,基于LinkedHashMap实现,元素唯一且有序,同时保持了哈希衷的性能;
        Tree5et :基于 TreeMap实现,元素唯一,自动排序或按照自定文规赔排序;

6.HashSet如何过滤重复元素?

        HashSet 内部使用一个HashMap 作为数据结构,保存元素时,会使用这个HashMap 的key 来进行保存。key 是唯一的,所以重复元素会自动过滤。

相关文章:

【Java-一些常见单列集合面试问题】

目录 1.List,Set的区别? 2.ArrayList与Vector区别? 3.Arraylist与LinkedList区别? 4.ArrayList的扩容机制? 5.HashSet、LinkedHashSet和TreeSet 区别? 6.HashSet如何过滤重复元素? 1.List,Set的区别…...

搭建个人博客需要做哪些事

文章目录 前言搭建步骤站点服务器站点域名注册域名ICP 备案公安备案域名解析 博客图床图床是什么图床搭建 博客站点搭建建站工具本地搭建博客部署 站点运营百度收录百度统计 总结 前言 花了几天时间,搭建了一个个人博客,也算是完成了年初立的一个flag&a…...

《向量数据库指南》——非结构化数据的行业需求及向量数据库的关键角色

非结构化数据的行业需求及向量数据库的关键角色 引言 在当今数字化时代,数据已成为驱动社会进步与产业升级的核心要素。随着技术的飞速发展,特别是人工智能(AI)技术的广泛应用,数据的类型与规模正以前所未有的速度增长。其中,非结构化数据作为数据海洋中的主体部分,其…...

C++:map容器的使用

一、map的使用介绍 map文档介绍 1.1 map的模版参数 Key:键值对中Key的类型 T:键值对中value的类型 Compare:比较器的类型,map中的元素是按照Key来进行比较的,缺省情况(不传参数时)按照小于来…...

C++初学(10)

10.1、共用体 共用体是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型。比如说:结构可以同时存储int、long、和double,而共用体只能存储int、long、或double。共用体的句式与结构相似,但含义不…...

在MAC安装Lazarus 起点 - 我们的第一个Lazarus程序!

安装Lazarus 首先到Lazarus官网,找到合适的版本下载页面,比如Mac的版本: https://sourceforge.net/projects/lazarus/files/Lazarus%20macOS%20x86-64/Lazarus%203.4/ 将三个文件都下载到本地,需要安装这三个文件: …...

【每日刷题】Day96

【每日刷题】Day96 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. LCP 44. 开幕式焰火 - 力扣(LeetCode) 2. 1022. 从根到叶的二进制数之和 - …...

EGO-Swarm 仿真环境搭建

EGO-Swarm仿真环境搭建 参考教程: https://github.com/ZJU-FAST-Lab/ego-planner-swarm EGO-Swarm是一种分散的异步系统解决方案,用于仅使用机载资源在未知的障碍物丰富的场景中进行多机器人自主导航。 1. 查看系统环境 要运行本仿真程序&#xff0c…...

【EI会议征稿通知】第九届计算机技术与机械电气工程国际学术论坛(ISCME 2024)

会议官网:www.is-cme.com 一轮截稿时间:2024年8月16日(早投稿,早录用) 大会时间:2024年11月8-10日 大会地点:中国 南京 接受/拒稿通知:投稿后1-2周 收录检索:EI Compend…...

【starRocks-docker 部署问题汇总】

Starrocks系列文章目录 例如:starrocks 常见问题汇总 文章目录 Starrocks系列文章目录前言一、Starrocks-be运行一段时间后,容器无法restart?二、等待后续跟新 前言 starrocks基于docker-compose部署的3节点分布式(3FE,3BE),遇到的问题也都…...

threejs中,如何检测一个模型周边一定范围内的其它模型

在Three.js中,要检测一个模型(我们可以称之为“主体模型”)周边一定范围内的其他物体,你可以通过以下步骤来实现: 1、定义检测范围: 首先,确定你需要检测的范围,这通常是一个以主体…...

UDP端口可达性检测(端口扫描)工具开发

UDP端口可达性检测(端口扫描)工具开发 1、应用场景分析 主机X与主机Y部署在AB双网环境下,两个主机间通过UDP协议进行数据交互。应用程序发送数据时,优先使用A网发送数据,如果A网异常则通过B网发送数据。两个主机应用间没有设置心跳帧 &…...

第三届计算、通信、感知与量子技术国际会议(CCPQT 2024)会议通知

会议信息 大会官网:http://www.ccpqt.org/ 官方邮箱:ccpqt_paper126.com 会议地点:中国珠海 会议时间:2024年10月25日-10月27日 主讲嘉宾 Prof. Trung Q. Duong IEEE Fellow and AAIA Fellow Memorial University of Newfoundl…...

Qt文件读写

Qt中文件读写类简述 包含头文件#include <QFile> 读写模式如下 枚举 文件读写步骤 1 先使用string 类型来接受打开文件的返回值 QFileDialog::getOpenFileName(this,"文件","./"); //打开一个文件 2 构建文件对象 Qfile ff (qstring)接受打…...

发现了一套超厉害的英语资料,绝对YYDS

昨某节目主持人与我闲聊英语学习的事情。 她工作数年&#xff0c;希望提升英文资讯的阅读能力。她主持的是中文节目&#xff0c;但节目对个人的知识广度和深度要求颇高。 现在的知识又太泛太杂&#xff0c;你需要了解国外最新资讯&#xff0c;多获得一手资料&#xff0c;面对节…...

C# new关键字作用

在C#中&#xff0c;当子类定义了与父类同名的字段或者方法时&#xff0c;可以使用new关键字进行隐藏。使用new和不使用new关键字的区别主要在于如何处理字段的隐藏和可访问性。 讲人话就是&#xff0c;假设父类的字段或方法&#xff0c;子类是可以直接访问的&#xff08;publi…...

Python代码之特征工程基础

1. 什么是特征工程 特征工程是指从原始数据中提取、转换和创建适合于模型训练的数据特征的过程。它是机器学习和深度学习中非常重要的一步&#xff0c;因为好的特征工程可以显著提高模型的性能。特征工程涉及从数据中提取有意义的信息&#xff0c;并将其转换为模型可以理解和使…...

低代码平台:效率利器还是质量妥协?

目录 低代码平台&#xff1a;效率利器还是质量妥协&#xff1f; 一、引言 二、低代码平台的定义和背景 1、什么是低代码平台&#xff1f; 2、低代码平台的兴起 三、低代码开发的机遇 1、提高开发效率 2、降低开发成本 3、赋能业务人员 四、低代码开发的挑战 1、质量…...

大数据-Big Data

1. 简介 1.1. 主要特点 大数据(Big Data)是指规模巨大、复杂多变的数据集合,这些数据集来源于多个不同的源,包括社交媒体、移动设备、物联网、传感器等。大数据的主要特点如下: 数据量大(Volume):大数据的起始计量单位是PB(1024TB)、EB(1024PB,约100万TB)或ZB(…...

Redis的持久化的策略

Redis的持久化的策略 官方文档说明 AOF持久化策略RDB持久化的策略 AOF持久化策略 AOF持久性记录服务器接收到的每个写操作&#xff0c;然后&#xff0c;可以在服务器启动时再次重播这些操作&#xff0c;重建原始数据集&#xff0c;使用与Redis协议本身相同的格式记录命令。…...

AI终于学会“动手”了:让ToClaw在高铁上帮我干活

在高铁上&#xff0c;我让 AI 帮我把电脑上的活干完了 上周出差&#xff0c;高铁上突然收到老板消息&#xff1a;「那份数据表记得今天下班前发我。」 我人在车上&#xff0c;电脑却留在公司。按以前&#xff0c;这事基本没戏——要么改签提前回去&#xff0c;要么硬着头皮说「…...

Vue-Multiselect 安全防护终极指南:彻底防范 XSS 攻击与数据注入威胁

Vue-Multiselect 安全防护终极指南&#xff1a;彻底防范 XSS 攻击与数据注入威胁 【免费下载链接】vue-multiselect Universal select/multiselect/tagging component for Vue.js 项目地址: https://gitcode.com/gh_mirrors/vu/vue-multiselect Vue-Multiselect 作为一款…...

仅限持牌机构内部流通的PHP支付安全Checklist(含银联/网联/跨境PayPal对接特例):12类边界场景+87行防御型代码片段

第一章&#xff1a;金融级PHP支付接口安全设计原则与合规基线金融级PHP支付接口的设计必须以等保三级、PCI DSS v4.0及《中国人民银行关于规范支付服务市场秩序的通知》为刚性约束&#xff0c;安全不是附加功能&#xff0c;而是架构的默认属性。核心设计原则包括最小权限暴露、…...

React - 组件优化、children props 与 render props、错误边界

一、组件优化 1、问题引入 &#xff08;1&#xff09;基本介绍只要执行 setState&#xff0c;即使不改变状态数据, 组件也会重新 render只要当前组件重新 render&#xff0c;就会自动重新 render 子组件&#xff0c;纵使子组件没有用到父组件的任何数据只要父组件更新&#xff…...

MusePublic Art Studio效果展示:大留白界面下SDXL生成的细腻光影与构图

MusePublic Art Studio效果展示&#xff1a;大留白界面下SDXL生成的细腻光影与构图 1. 创作工具新体验 MusePublic Art Studio 彻底改变了AI图像创作的交互方式。这个工具最吸引人的地方在于——你不需要懂任何代码&#xff0c;也不需要配置复杂的环境&#xff0c;就像打开一…...

手把手教你用FastDeploy轻松玩转文心大模型4.5开源版

1. 为什么选择FastDeploy部署文心大模型4.5 最近在AI圈子里&#xff0c;文心大模型4.5开源版绝对是热门话题。作为一个长期折腾AI模型部署的老手&#xff0c;我试过各种部署工具&#xff0c;FastDeploy确实让我眼前一亮。这个由百度官方推出的工具&#xff0c;专门为大模型部署…...

让大模型异步地增强推理能力

当大模型进入推理时代&#xff0c;如何在不牺牲效果的前提下&#xff0c;把测试时扩展做得更快、更稳、更高效&#xff1f;ATTS给出了一种值得关注的新答案。过去一年&#xff0c;大模型的发展逻辑正在发生一个明显变化。如果说早期大家更关注“模型有多大、数据有多少、训练得…...

Cursor Pro智能激活完全指南:三步解锁无限AI编程权限

Cursor Pro智能激活完全指南&#xff1a;三步解锁无限AI编程权限 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your tria…...

还在手写网页?CMS才是高效建站的正确打开方式

在网站开发的早期阶段&#xff0c;手写网页是主流方式。开发者需手动编写HTML、CSS、JavaScript等代码&#xff0c;从页面结构搭建到内容填充&#xff0c;每个环节都需要逐行编码。这种方式在技术层面具有极高的自主性&#xff0c;适合小型静态页面或对代码细节有极致要求的场景…...

突破限制:直链解析技术如何让网盘下载加速5倍的实战指南

突破限制&#xff1a;直链解析技术如何让网盘下载加速5倍的实战指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…...