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

Java面试值之集合

集合

    • 1.HashMap底层?扩容机制?1.7-1.8的升级?
    • 2.HashMap的长度为什么是2的幂次方?
    • 3.HashMap 插入1.7和1.8的区别?
    • 4.什么是红黑树?O(logn)
    • 5.HashMap为什么会使用红黑树?
    • 6.ArrayList底层?扩容机制?
    • 7.LinkedList底层?扩容机制?
    • 8.ArrayList可以序列化,但是为什么不直接序列化?
    • 9.数组和ArrayList的区别,有数组为啥还有ArrayList?
    • 10.ConcurrentHashMap?
    • 11.HashMap的put的理解?
    • 12.HashMap的get的理解?
    • 13.HashSet的底层?
    • 14.HashSet是如何保证数据不重复的?
    • 15.TreeMap?HashMap?HashTable?LinkedHashMap?区别?
    • 16.HashSet?LinkedHashSet?TreeSet?区别?
    • 17.什么是Hash?什么是Hash冲突?怎么解决的?
    • 18.什么是扰动函数?
    • 19.集合中的快速失败机制"fail-fast"和安全失败?
    • 20.怎么确保一个集合不能被修改?
    • 21.Iterator和ListIterator区别?
    • 22.移除collection元素?
    • 23.遍历list的不同方式?
    • 24.ArrayList为什么不直接序列化其内部数组?
    • 25.快排时间复杂度?
    • 26.什么叫序列化?
    • 27.==和equals的区别?
    • 28.1<<4是什么意思?
    • 29.时间复杂度的排序?
    • 30.HashMap中,string、Integer这样的包装类适合作为key么?任何类都可以作为key么?Object作为HashMap的Key,应该怎么做?
    • 31.Collection和Collections的区别?
    • 32.Collections.sort的原理?
    • 33.怎么确保一个集合不被修改?
    • 34.哪些集合类是线程安全的?

持续更新中~

1.HashMap底层?扩容机制?1.7-1.8的升级?

  • 底层数据结构:
    • 1.7:是数组+链表;
    • 1.8:底层是数组+链表+红黑树;
  • 默认大小16;
  • 怎么扩容;
    • 创建一个新Entry空数组,是原先的两倍;
    • 遍历原有的数组,把之前的数组重新Hash到新数组中;
  • 什么时候扩容:负载因子是0.75f,比如100,数量到76的时候就扩容;

2.HashMap的长度为什么是2的幂次方?

为了能让HashMap存取高效,尽量减少碰撞,就是要尽量把数据分配均匀,每个链表/红黑树的长度大致相同。

3.HashMap 插入1.7和1.8的区别?

在 Java 1.7 中,HashMap 使用了数组和链表来存储键值对。插入操作大致分为以下几个步骤:

  1. 计算哈希值:首先,使用键的 hashCode() 方法计算其哈希值。
  2. 定位桶:通过哈希值与数组长度减 1 进行位与操作,确定键应该放入哪个桶中。
  3. 处理哈希冲突ÿ

相关文章:

Java面试值之集合

集合 1.HashMap底层?扩容机制?1.7-1.8的升级?2.HashMap的长度为什么是2的幂次方?3.HashMap 插入1.7和1.8的区别?4.什么是红黑树?O(logn)5.HashMap为什么会使用红黑树?6.ArrayList底层?扩容机制?7.LinkedList底层?扩容机制?8.ArrayList可以序列化,但是为什么不直接序…...

React之组件定义和事件处理

一、组件的分类 在react中&#xff0c;组件分为函数组件和class组件&#xff0c;也就是无状态组件和有状态组件。 * 更过时候我们应该区别使用无状态组件&#xff0c;因为如果有状态组件会触发生命周期所对应的一些函数 * 一旦触发他生命周期的函数&#xff0c;它就会影响当前项…...

LeetCode -55 跳跃游戏

LeetCode -55 跳跃游戏 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。…...

Android和Linux的嵌入式开发差异

最近开始投入Android的怀抱。说来惭愧&#xff0c;08年就听说这东西&#xff0c;当时也有同事投入去看&#xff0c;因为恶心Java&#xff0c;始终对这玩意无感&#xff0c;没想到现在不会这个嵌入式都快要没法搞了。为了不中年失业&#xff0c;所以只能回过头又来学。 首先还是…...

关于Node.js异常处理的教程

在Node.js开发中&#xff0c;异常处理是非常重要的一部分。良好的异常处理可以帮助我们及时发现和解决问题&#xff0c;提高系统的稳定性和可靠性。本教程将向您介绍Node.js中异常处理的最佳实践和策略。 1. 使用try-catch捕获同步异常 在Node.js中&#xff0c;可以使用try-c…...

13. Springboot集成Protobuf

目录 1、前言 2、Protobuf简介 2.1、核心思想 2.2、Protobuf是如何工作的&#xff1f; 2.3、如何使用 Protoc 生成代码&#xff1f; 3、Springboot集成 3.1、引入依赖 3.2、定义Proto文件 3.3、Protobuf生成Java代码 3.4、配置Protobuf的序列化和反序列化 3.5、定义…...

Spring: Springboot 框架集成不同版本的spring redis

文章目录 一、集成不同版本的spring redis1、Spring Data Redis 1.x&#xff1a;2、Spring Data Redis 2.x&#xff1a;3、Spring Data Redis 3.x&#xff08;Spring Boot 2.x&#xff09;&#xff1a; 二、springboot集成Spring Data Redis 2.x1、首先&#xff0c;确保在 pom.…...

学习JAVA的第八天(基础)

目录 多态 前提 形式 测试类 调用成员的特点 优势 劣势 包 注意事项&#xff1a; final关键字 常量 命名规范&#xff1a; 注意事项&#xff1a; 权限修饰符 分类 代码块 局部代码块 构造代码块 静态代码块 抽象类 抽象类&#xff1a; 定义格式 抽象…...

【硬件相关】IB网/以太网基础介绍及部署实践

文章目录 一、前言1、Infiniband网络1.1、网络类型1.2、网络拓扑1.3、硬件设备1.3.1、网卡1.3.2、连接线缆a、光模块b、线缆 1.3.4、交换机 2、Ethernet网络 二、部署实践&#xff08;以太网&#xff09;1、Intel E810-XXVDA21.1、网卡信息1.2、检查命令1.2、驱动编译 2、Mella…...

【JavaEE】_Spring MVC项目之建立连接

目录 1. Spring MVC程序编写流程 2. 建立连接 2.1 RequestMapping注解介绍 2.2 RequestMapping注解使用 2.2.1 仅修饰方法 2.2.2 修饰类与方法 2.3 关于POST请求与GET请求 2.3.1 GET请求 2.3.2 POST请求 2.3.3 限制请求方法 1. Spring MVC程序编写流程 1. 建立连接&…...

【JavaEE进阶】 Spring AOP源码简单剖析

文章目录 &#x1f343;前言&#x1f340;Spring AOP源码剖析⭕总结 &#x1f343;前言 前面的博客中&#xff0c;博主对代理模式进行了一个简单的讲解&#xff0c;接下来博主将对Spring AOP源码进行简单剖析&#xff0c;使我们对Spring AOP了解的更加深刻。 &#x1f340;Sp…...

Redis--内存回收机制详解

什么是内存回收机制? 众所周知Redis之所以性能高是因为数据都存在内存中&#xff0c;内存是很宝贵的&#xff0c;Redis的内存回收机制本质就是处理达到过期时间的key-value&#xff0c;以及当内存到达最大使用值时候触发的内存淘汰策略。 Redis数据删除的策略有哪些&#xf…...

win安装卸载python3.13

一、安装 访问python官网&#xff1a;https://www.python.org/ 点击“Downloads” 点击“Windows” 找到自己要下载的版本和位数&#xff0c;比如我这个是3.13版本、64位的安装包 下载好了之后&#xff0c;双击安装包 勾选“Add python.exe to PATH”&#xff1a;把python环…...

APIFox-自动获取登录状态操作

APIFox-自动获取登录状态操作 概述 作为纯后端开发码农&#xff0c;每次接口开发完的调试很重要&#xff0c;因此每次重复的手动获取登陆状态Token或者直接放行就太麻烦了。 APIFox提供了前置操作&#xff0c;可以很方便的自动获取登录状态&#xff0c;节省大量重复劳动时间。…...

【NDK系列】Android tombstone文件分析

文件位置 data/tombstone/tombstone_xx.txt 获取tombstone文件命令&#xff1a; adb shell cp /data/tombstones ./tombstones 触发时机 NDK程序在发生崩溃时&#xff0c;它会在路径/data/tombstones/下产生导致程序crash的文件tombstone_xx&#xff0c;记录了死亡了进程的…...

CentOS7 Hive2.3.8安装

CentOS7 Hive2.3.8 安装 建议从头用我的博客&#xff0c;如果用外教的文件到 一、9)步骤了&#xff0c;就用他的弄完&#xff0c;数据库不一样&#xff0c;在9步骤前还能继续看我的 一、 安装MySQL 0.0&#xff09;查询mariadb,有就去0.1&#xff09;&#xff0c;没有就不管…...

代码随想录算法训练营第四十四天 完全背包 、零钱兑换 II 、组合总和 Ⅳ

代码随想录算法训练营第四十四天 | 完全背包 、零钱兑换 II 、组合总和 Ⅳ 完全背包 题目链接&#xff1a;题目页面 (kamacoder.com) 解释一、01背包 一维 &#xff1a;为什么要倒序遍历背包&#xff1f; 首先要明白二维数组的递推过程&#xff0c;然后才能看懂二维变一维的…...

【经验】vscode 鼠标拖曳不能选中整行文字,只能选中纵向矩形范围

1、问题描述 不知道昨天操作vscode设置界面时&#xff0c;误选择了啥&#xff0c;导致鼠标拖曳不能选中整行文字&#xff0c;只能选中纵向矩形范围&#xff0c;现象如下&#xff1a; 2、解决方法 1&#xff09;打开设置界面 点击左下角按键&#xff0c;选择“设置” 2&…...

Redis--事务机制的详解及应用

Redis事务的概念&#xff1a; Redis事务就是将一系列命令包装成一个队列&#xff0c;在执行时候按照添加的顺序依次执行&#xff0c;中间不会被打断或者干扰&#xff0c;在执行事务中&#xff0c;其他客户端提交的命令不可以插入到执行事务的队列中&#xff0c;简单来说Redis事…...

路由器端口映射如何配置?

在网络通信中&#xff0c;路由器是一个重要的设备&#xff0c;它负责将数据包从一个网络传输到另一个网络。路由器的端口映射配置是一种重要的设置&#xff0c;可以使外部网络中的计算机通过访问路由器上的特定端口与内部网络中的计算机进行通信。本文将介绍什么是路由器端口映…...

Razer-macos核心组件深度剖析:设备管理器与动画系统

Razer-macos核心组件深度剖析&#xff1a;设备管理器与动画系统 【免费下载链接】razer-macos Color effects manager for Razer devices for macOS. Supports High Sierra (10.13) to Monterey (12.0). Made by the community, based on openrazer. 项目地址: https://gitco…...

我不是狐狸,我是那Harness Engineering膳

Julia&#xff08;julialang.org&#xff09;由Stefan Karpinski、Jeff Bezanson等在2009年创建&#xff0c;目标是融合Python的易用性、C的高性能、R的统计能力、Matlab的科学计算生态。 其核心设计哲学是&#xff1a; 高性能&#xff1a;编译型语言&#xff08;JIT&#xff0…...

MICROCHIP微芯 24AA02UIDT-I/OT SOT23 EEPROM

特性: 预编程的32位序列号: 在所有UID系列EEPROM中唯一 可扩展至48位、64位、128位、256位及其 他长度 单电源供电&#xff0c;工作电压低至1.7V 低功耗CMOS技术: -读取电流最大为1mA。 -待机电流最大1A。 2线串行接口&#xff0c;兼容12CTM Schmitt触发输入用于噪声抑制 输出斜…...

R60ABD1雷达模块:基于FMCW技术的非接触式睡眠监测方案

1. 毫米波雷达如何无感监测你的睡眠 第一次听说雷达能监测睡眠时&#xff0c;我也觉得不可思议。直到把R60ABD1模块装在卧室天花板&#xff0c;第二天醒来看到手机APP上完整的呼吸曲线和心率变化图&#xff0c;才真正感受到科技的神奇。这款仅有U盘大小的设备&#xff0c;通过6…...

AgentCPM研报助手效果实测:生成高质量行业趋势分析

AgentCPM研报助手效果实测&#xff1a;生成高质量行业趋势分析 1. 引言&#xff1a;当AI遇见专业研报写作 在金融投资、市场研究和学术分析领域&#xff0c;撰写深度研究报告一直是一项耗时费力的工作。传统流程需要分析师花费数天时间收集数据、整理资料、分析趋势&#xff…...

暗黑破坏神2存档编辑器:3步打造你的完美游戏角色

暗黑破坏神2存档编辑器&#xff1a;3步打造你的完美游戏角色 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 还在为暗黑破坏神2的角色属性不够理想而烦恼&#xff1f;或者想体验不同的装备组合却不想重新练级&#xff1f;今天我…...

Windows热键冲突快速排查指南:Hotkey Detective实战手册

Windows热键冲突快速排查指南&#xff1a;Hotkey Detective实战手册 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否…...

MPV_lazy高性能播放器架构深度解析:5大优化实战指南

MPV_lazy高性能播放器架构深度解析&#xff1a;5大优化实战指南 【免费下载链接】mpv_PlayKit &#x1f504; mpv player 播放器折腾记录 Windows conf | 中文注释配置 汉化文档 快速帮助入门 | mpv-lazy 懒人包 Win11 x64 config | 着色器 shader 滤镜 filter 整合方案 项目…...

UndertaleModTool终极指南:3步构建你的个性化游戏世界

UndertaleModTool终极指南&#xff1a;3步构建你的个性化游戏世界 【免费下载链接】UndertaleModTool The most complete tool for modding, decompiling and unpacking Undertale (and other GameMaker games!) 项目地址: https://gitcode.com/gh_mirrors/un/UndertaleModTo…...

Janus-Pro-7B数学模型求解助手:辅助Matlab与数学建模工作流

Janus-Pro-7B数学模型求解助手&#xff1a;辅助Matlab与数学建模工作流 1. 引言 如果你经常和数学公式、算法模型打交道&#xff0c;一定有过这样的经历&#xff1a;面对一个复杂的优化问题&#xff0c;脑子里有思路&#xff0c;但要把这个思路变成能跑的Matlab代码&#xff…...