【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. 查看系统环境 要运行本仿真程序,…...
【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
昨某节目主持人与我闲聊英语学习的事情。 她工作数年,希望提升英文资讯的阅读能力。她主持的是中文节目,但节目对个人的知识广度和深度要求颇高。 现在的知识又太泛太杂,你需要了解国外最新资讯,多获得一手资料,面对节…...
C# new关键字作用
在C#中,当子类定义了与父类同名的字段或者方法时,可以使用new关键字进行隐藏。使用new和不使用new关键字的区别主要在于如何处理字段的隐藏和可访问性。 讲人话就是,假设父类的字段或方法,子类是可以直接访问的(publi…...
Python代码之特征工程基础
1. 什么是特征工程 特征工程是指从原始数据中提取、转换和创建适合于模型训练的数据特征的过程。它是机器学习和深度学习中非常重要的一步,因为好的特征工程可以显著提高模型的性能。特征工程涉及从数据中提取有意义的信息,并将其转换为模型可以理解和使…...
低代码平台:效率利器还是质量妥协?
目录 低代码平台:效率利器还是质量妥协? 一、引言 二、低代码平台的定义和背景 1、什么是低代码平台? 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持久性记录服务器接收到的每个写操作,然后,可以在服务器启动时再次重播这些操作,重建原始数据集,使用与Redis协议本身相同的格式记录命令。…...
React - 组件优化、children props 与 render props、错误边界
一、组件优化 1、问题引入 (1)基本介绍只要执行 setState,即使不改变状态数据, 组件也会重新 render只要当前组件重新 render,就会自动重新 render 子组件,纵使子组件没有用到父组件的任何数据只要父组件更新ÿ…...
如何在Windows、Linux和macOS上快速配置Ryujinx Switch模拟器:5个关键步骤提升游戏体验
如何在Windows、Linux和macOS上快速配置Ryujinx Switch模拟器:5个关键步骤提升游戏体验 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 想要在电脑上畅玩Switch游戏吗&…...
终极nvm-windows完整指南:Windows平台Node.js版本管理专业解决方案
终极nvm-windows完整指南:Windows平台Node.js版本管理专业解决方案 【免费下载链接】nvm-windows A node.js version management utility for Windows. Ironically written in Go. 项目地址: https://gitcode.com/gh_mirrors/nv/nvm-windows nvm-windows是Wi…...
6个步骤让Windows系统性能提升60%:Win11Debloat全方位优化指南
6个步骤让Windows系统性能提升60%:Win11Debloat全方位优化指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutte…...
WinCDEmu:开源虚拟光驱工具的技术架构与实践指南
WinCDEmu:开源虚拟光驱工具的技术架构与实践指南 【免费下载链接】WinCDEmu 项目地址: https://gitcode.com/gh_mirrors/wi/WinCDEmu 副标题:5个核心优势让你高效管理光盘映像文件 一、核心价值解析 WinCDEmu作为一款开源虚拟光驱解决方案&…...
智能车浅谈——控制规律篇
文章目录前言计算机控制系统常用控制规律PID控制比例(P)控制器比例积分(PI)控制器比例积分微分(PID)控制位置式PID增量式PID数字PID控制算法的改进PID参数整定小结串级控制模糊控制智能车系列文章汇总前言 之前已经记录了一些有关…...
VUE.JS实践--事件对象和计算属性
一、什么是事件对象1.2 演示事件对象,在控制台输出 单击事件 的两种方法。<template><!-- 两个作用函数完全一样:接收事件对象 → 打印到控制台 --><!-- 按钮1:点击触发 greet 方法 --><button click"greet"…...
Spring AI Alibaba vs. AgentScope:两个阿里AI框架,如何选择?
Spring AI Alibaba vs. AgentScope:两个阿里AI框架,如何选择?发布日期:2026年4月9日前言 最近技术圈中,阿里巴巴开源的 Spring AI Alibaba 和 AgentScope 引发广泛讨论。两者同为阿里出品,但设计哲学和应用…...
5大场景彻底解决电脑休眠难题:Move Mouse开源防休眠工具全攻略
5大场景彻底解决电脑休眠难题:Move Mouse开源防休眠工具全攻略 【免费下载链接】movemouse Move Mouse is a simple piece of software that is designed to simulate user activity. 项目地址: https://gitcode.com/gh_mirrors/mo/movemouse 你是否也曾经历…...
新的科研生产力:小龙虾(Claude Code) 最管用的skills合集,建议是收藏!
最近小龙虾火出了圈子。无论是做生物科研的老师同学,还是开发者,大家都想当第一个吃“龙虾”的人。但很多人用龙虾写论文的时候,首先卡在下载的这个问题上,其次是缺乏稳定性,输出的文章质量时好时坏。小编最近mark了一…...
