首页 > 编程语言 >Java集合篇

Java集合篇

时间:2024-01-22 22:55:25浏览次数:33  
标签:扩容 Java 元素 链表 因子 冲突 哈希 集合

面渣逆袭

一、Java集合篇

2024/1/22

  • 哈希冲突的解决方案:

    哈希冲突是指输入两个不同的值,通过同一个哈希函数,得到一个相同的值;而HashMap是通过链表的方式来解决哈希冲突;

    • 链地址法:在冲突的位置拉一个链表,把冲突的元素放进去;

    • 开放定址法: 从冲突的位置上接着往下找,给冲突元素找个空位

  • HashMap的数据结构:

    • jdk8:采用的是:数组+链表+红黑树

    • 数组用于储存数据,链表用于解决哈希冲突,红黑树用于提高查询的效率

  • HashMap扩容机制?何时进行扩容?扩容因子为什么是0.75?

    • 为了减少哈希冲突,当hashmap的元素个数达到临界值时,就触发扩容机制

    • 临界值=默认容量*默认扩容因子

    • hashmap初始默认容量为16,初始化容量是2的次幂,扩容之后的长度是之前的2倍,新的容量也是2的次幂,所以扩容机制是随着元素的增加,HashMap通过增大内部数组的容量和重新计算哈希值来保持高效的访问速度。同时,JDK8的优化使得在链表较长时能够通过红黑树提高查询效率。

    • 扩容因子是0.75的原因(扩容因子决定元素的个数达到多少时,方进行扩容)

      • 出于对查询时间和存储空间成本两者之间的平衡考虑

      • 如果扩容因子设置较大时,元素越多,而空位较少的时候才扩容,那么发生查询数据的时间就增加,增大了哈希冲突的概率。

      • 如果扩容因子设置较小,元素越少,而空位较多的时候才扩容,虽然发生哈希冲突的概率降低,查找时间成本降低,但是空间成本增加了,需要更多的空间去存储元素。

标签:扩容,Java,元素,链表,因子,冲突,哈希,集合
From: https://www.cnblogs.com/nzm-2019/p/17981318

相关文章

  • Java学习日记 Day8
    本来昨天计划今天开展开源架构的,但是决定先把JavaWeb的内容速通一下,明天开始SSM吧。前端+JavaWeb知识点补充:①网络传输三大基石:URL、HTTP、HTML②HTML:超文本标记语言,在浏览器中展示一个页面③CSS:美化页面④JS:实现页面动态跳转等交互⑤Tomcat:在服务器中运行程序的一个东西......
  • Java之并发工具类的详细解析
     3.并发工具类3.1并发工具类-HashtableHashtable出现的原因:在集合类中HashMap是比较常用的集合对象,但是HashMap是线程不安全的(多线程环境下可能会存在问题)。为了保证数据的安全性我们可以使用Hashtable,但是Hashtable的效率低下。代码实现:packagecom.itheima.mymap;imp......
  • 【开源】基于JAVA的生活废品回收系统
    一、摘要1.1项目介绍生活废品回收系统是可持续发展的解决方案,旨在鼓励人们分离和回收生活垃圾,减少环境污染和资源浪费,生活废品回收系统涵盖了城市居民的日常生活,包括收集、分类、处理和收集废物的完整过程。本文提出了一种基于Vue技术的生活废品回收系统,该系统可以通过垃圾的收集......
  • Java中System类和Runtime类常用方法和属性
    ​ Java中,System类和Runtime类提供了一些关键的功能,用于与底层操作系统以及运行时环境进行交互。System类是Java标准库中的一个类,提供了对JVM的一些基本访问和控制方法。Runtime类实例封装了运行时环境。为Java程序提供了与底层系统交互的强大工具,但也需要谨慎使用以避免潜......
  • STL-Set集合
    STL-Set集合目录STL-Set集合导入构造插入删除查找元素遍历元素成员方法multisetunordered_set参考资料set集合unordered_set无序集合set的元素不像map那样可以同时拥有实值和键值,set的元素即是键值又是实值。set不允许两个元素有相同的键值。不允许出现相同的两个se......
  • JAVA 学习心得1.22
    JAVA学习1:一、一些小知识1.计算机由软件硬件组成软件—平时用的app等。硬件—鼠标键盘等。2.Java之父——詹姆斯·高斯林,由SUN公司研发。3.使用需要JDK工具包,调整Java环境,PATH等。4.Java具有跨平台性,简单来说就是很多平台都能够运行和编译java语言的文件。二、一切的......
  • 细说JavaScript事件处理(JavaScript事件处理详解)
    js语言的一个特色和就是它的动态性,即一时间驱动的方式对用户输入作出反应而不需要依赖服务器端程序。事件是指人机交互的结果,如鼠标移动、点击按钮、在表单中输入数据或载入新的Web洁面等。一、什么是事件事件是一些可以通过脚本响应的页面动作,当文档、浏览器、元素发生某些有趣......
  • JavaScript DOM表单相关操作之表单相关事件
    1、焦点事件焦点事件就是鼠标的光标事件,点到输入框中,叫做获得焦点事件,当鼠标离开这个输入框时叫做失去焦点事件。​<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>知数SEO_专注搜索引擎优化和品牌推广</title></head><body><form><h3>......
  • JavaScript DOM表单相关操作之获取表单数据的方式
    在与表单相关的操作中,我们用的最多的就是获取表单中的数据。想要获取指定输入框的数据,首先就需要获取到这个输入框对象。1、通过id属性获取表单数据​<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>知数SEO_专注搜索引擎优化和品牌推广</title></head......
  • 细说JavaScript事件处理(JavaScript事件处理详解)
    js语言的一个特色和就是它的动态性,即一时间驱动的方式对用户输入作出反应而不需要依赖服务器端程序。事件是指人机交互的结果,如鼠标移动、点击按钮、在表单中输入数据或载入新的Web洁面等。一、什么是事件事件是一些可以通过脚本响应的页面动作,当文档、浏览器、元素发生某些有......