首页 > 编程语言 >Java 中的哈希表数据结构

Java 中的哈希表数据结构

时间:2024-02-06 15:46:32浏览次数:54  
标签:Java HashMap 单向 链表 哈希 集合 数据结构

哈希表数据结构

  • HashMap集合:
  • 在JDK8之后,如果单向链表中的元素超过8个,单向链表数据结构就会变成红黑树数据结构,当红黑树上的节点数量小于6时,会重新把红黑树变成单向链表数据结构。
  • HashMap集合底层是哈希表/散列表的数据结构
  • 哈希表是一个怎样的数据结构?
    哈希表是一个数组和单向链表的结合体
    数组:在查询方面效率很高
    单向链表:在随机增删方面效率很高
    • 哈希表将两种数据结构结合在一起,充分发挥他们各自的优点
      最主要掌握的是:
    • map.put(k,v)
    • v = map.get(k)
      这两个方法的实现原理。
    • 重点:通过讲解可以得出HashMap集合的Key,会先后调用两个方法 hashCode(),equals(),这两个方法都需要重写
    • HashMap集合的默认初始化容量是16,默认加载因子是0.75:这个默认加载因子是当HashMap集合底层数组容量达到75%的时候,数组开始扩容
      重点:HashMap集合初始化容量必须是2的倍数,这也是官方推荐
    • 这是因为达到散列均匀,为了提高HashMap集合的存取效率,所必须的。
    • hashcode()和 equals()方法可以直接使用IDEA工具直接生成,但是这两个方法需要同时生成。使用Alt + Ins来生成

HashMap集合允许key为null,但是null值只会有一个。Hashtable集合不允许key为null

Hashtable的初始化容量是11,默认加载因子是0.75。Hashtable扩容后是原容量的两倍加1

标签:Java,HashMap,单向,链表,哈希,集合,数据结构
From: https://www.cnblogs.com/shijili/p/18009820

相关文章

  • Java 中的属性类Properties 以及TreeSet和TreeMap
    属性类Propertiesimportjava.util.Properties;/**目前只需要掌握Properties属性类对象的相关方法即可*Properties是一个Map集合,继承Hashtable,Properties的key和value都是String类型*Properties被称为属性类对象*Properties是线程安全的**/publicclassProperties......
  • 用Java编译一个简单计算器
    作业写一个计算器,要求实现加减乘除功能,并且能够循环接收新的数据,通过用户交互实现。思路推荐:写4个方法,加减乘除利用循环+switch进行用户交互传递需要操作的两个数输出结构packagecom.hongyi.method;importjava.util.Scanner;//写一个计算器,要实现加减乘除功能,......
  • Java 中的比较器
    比较器TreeSet集合中元素可排序的方式:使用比较器的方式结论:放到TreeSet或者TreeMap集合中的key部分的元素要想做到排序,有两种方法:第一种:放到集合中的元素实现java.lang.Comparable接口importjava.util.Comparator;importjava.util.TreeSet;publicclassTreeSetTest02{......
  • java 关于有序获取多线程的返回结果问题,按提交任务的顺序,收集执行结果
    问题:以前做的多线程,执行的返回结果都是无序的,所以每次执行完毕后还要对结果集重新进行排序,增加了耗时; 今天突然想到一个思路,在给线程池提交任务的时候,可以提前获取任务总数,创建一个用于接收结果集的固定大小list2,然后子线程执行的时候把当前任务序号传进去,处理好数据后根据序号......
  • 了解Java
    Java版本发展路线从Java5开始,舍弃小版本命名,使用大版本号的方式命名。Java平台分为JaveSE、JaveEE、JaveME三类JaveSE、JaveEE、JaveMEJaveSE:(JavaPlatform,StandardEdition,又称J2SE),可以理解为Java标准版本包含了Java日常开发使用的基本类,允许开发和部署在桌面、服务器、嵌......
  • JAVA之异常处理
    一、异常的体系结构Throwable:是java中所有异常和错误的父类,其包括两个子类Error(错误)和Exception(异常)。Error:是程序中无法处理的错误,一般是指与虚拟机相关的问题,如系统崩溃、虚拟机错误、动态链接失败等。这类错误无法恢复或捕获,将会导致应用程秀中断。此类异常发生时,必须手......
  • [数据结构] 栈
    栈的定义及特点栈(Stack)是只允许在一端进行插入或删除操作的线性表,如图所示:栈顶(top):线性表允许进行插入、删除的一端;栈底(bottom):不允许进行插入和删除的一端;空栈:不含任何元素的空表。如上图所示,设某个栈\(S=(a_1,a_2,a_3,a_4,a_5)\),则\(a_1\)为栈底元素,\(a_5\)为栈顶元素。......
  • JavaScript的正则表达式
    目录一、概念二、修饰符1.g(global,全局)2.i(ignorecase,不区分大小写)3.m(multi-line,多行)4.s(single-line,单行)5.u(Unicode,Unicode字符)6.y(sticky,粘性)三、元字符1..(匹配非换行符\n的任意一个字符)2.\d(匹配数字)3.\D(匹配除数字以外的所有字符)......
  • Java学习初体验
    1.安装JDK进入官网:https://oracle.com->Products->Java->DownloadJava选择JDK版本,再选择相应操作系统,注意CPU架构为X86还是ARM,安装即可。ps:下载JDK版本要下载TLS版本,LTS(Long-TermSupport,长期支持)是指针对软件的某一版本,提供长时间的技术支持、安全更新和错误......
  • JavaScript移动端的手指触摸touch事件
    目录概念touchstart触摸发生事件touchend触摸结束事件touchmove触摸移动事件touchcancel触摸取消事件自定义事件自定义轻触事件方法touchtap自定义左右划动事件方法touchswiper概念在JavaScript中,移动端基本的手指触摸touch事件有四种,分别为:touchstart:手指触摸屏幕时......