步骤1:首先对传入值keya进行hash运算,依然是高位和地位进行^运算,得到的hash值和n-1进行&运算,最终得到索引值

步骤2:首先判断该数组是否为空,是否长度为0,当前索引位置的第一个元素是否为null,满足任意一个条件返回null,结束

步骤3:将传入值keya的hash值与当前索引位第一个元素的hash值进行比较,一样则继续比较是否为相同引用,或者equals是否相等,若相等,返回其value,结束。

步骤4:不相等的话,会出现两种可能性,如果当前索引位置后面还有元素,则可能在后面,如果没有元素了,直接退出,返回null,结束。

步骤5:当前索引位置不止1个元素的情况下,首先判断,当前索引位置的第一个节点是否为树节点,如果是树节点,在红黑树里面进行遍历。

步骤6:如果不是树节点,那么就是链表,在while中进行遍历,判断当前元素是否传入值相等,不等则循环到链表的最后一个元素为止。相等则返回该value.

hashmap浅析-get方法相关推荐

  1. HashMap的遍历方法

    使用工具 IDEA2018.2 使用说明 使用迭代器,即创建Iterator对象,Iterator是一个接口,也有泛型 hasNext方法判断是否已经遍历完, next方法取当前遍历的对象 HashM ...

  2. HashMap的使用方法详解

    HashMap是一种十分常用的数据结构对象,可以保存键值对,下面将详细介绍HashMap的使用方法. 一.添加方法 put方法,可以单次向HashMap中添加一个键值对. 注意:添加到Map中的数据, ...

  3. 遍历HashMap的最佳方法

    遍历HashMap的最佳方法 @(JAVA)[java] stackoverflow上推荐的遍历hashMap的最佳方法: 详见github上的代码. package org.ljh.javademo ...

  4. java散列法的运用实例,Java HashMap compute() 使用方法及示例

    Java HashMap compute() 使用方法及示例 Java HashMap compute()方法计算一个新值,并将其与哈希映射中的指定键相关联. compute()方法的语法为: has ...

  5. HashMap的put方法(Java7)和putVal方法(Java8)

    目录 数组+链表:存在性能最坏情况O(n) Java7的HashMap的put方法思路 数组+链表+红黑树:性能提高到O(logn) Java8的HashMap的putVal方法思路 数组+链表:存在 ...

  6. HashMap的put方法返回值问题

    API文档中的描述: 先看一个例子 Map<Character, Integer> map = new HashMap<Character, Integer>(); Syste ...

  7. java map isempty_Java HashMap isEmpty() 使用方法及示例

    Java HashMap isEmpty() 使用方法及示例 Java HashMap isEmpty()方法检查哈希映射是否为空. isEmpty()方法的语法为: hashmap.isEmpty( ...

  8. HashMap的put方法原理

    本篇内容基于JDK 1.8 一.HashMap的put方法流程如下图 二.具体的源码分析 /*** Associates the specified value with the specified ...

  9. Java HashMap的put方法

    实习半年,基本上在写scala和python.很少碰Java了,趁最近闲,补一波Java集合的东西.这篇主要分析HashMap的插入方法.之后再抽时间看下红黑树. 可能出现的几种插入情况: 1.初次插 ...

  10. 详解HashMap的put方法

    关于HashMap,在面试中几乎是必问的考点,记得我第一次面试,面试官上来就是说一下HashMap的put方法.不过当时还好做好了准备,这些也是能够轻松回答出来.值得注意的是,从JDK1.7到JDK1 ...

最新文章

  1. python代码创建数据库_如何使用python ORM创建数据库表?
  2. boost::coroutine模块实现power的测试程序
  3. JDK 14的新特性:更加好用的NullPointerExceptions
  4. svn 无线服务器,远程svn服务器
  5. java socket 远程调用_使用Socket反射Java流操作进行方法的远程调用(模拟RPC远程调用)...
  6. 【C++】之【运算符重载函数】
  7. shell 数据类型
  8. PiFlow v0.5 发布:大数据流水线系统
  9. Mysql中怎样创建和使用存储过程
  10. 数组迭代方法之reduce
  11. xshell与虚拟机VMware中centos6.7系统突然连不上
  12. android http上传,Android HttpClient上传文件(亲测,成功)
  13. 闪寸 U盘 检测工具 量产工具
  14. 计算机信息管理企业资源规划综合实训,企业资源规划(ERP)综合实训细则
  15. WPS删除多余空白页
  16. php 怎么使用sql server 2000,Linux下PHP支持MSSQL(SQL Server2000)
  17. Android ApiDemos示例解析(110):Views-Data Widgets-1. Dialog
  18. 网络连接三种方式-桥接模式
  19. Linux基础命令介绍四:文本编辑vim
  20. 游客丽江住店被蚊子咬醒 前台:养的宠物 死1只赔100

热门文章

  1. 系统架构升级建议书(1)
  2. ora-03297(表空间无法回收)问题的解决方法
  3. 区块链学习(二)以太坊私有链搭建
  4. openpyxl 2.5.0中文文档
  5. windows下git安装配置
  6. 菜鸟学自动化测试(八)----selenium 2.0环境搭建(基于maven)
  7. dup和dup2(摘 )
  8. 编程题目:PAT 1006. 换个格式输出整数 (15)
  9. Paypal开源nodejs框架研究(二)KrakenJs之Enrouten
  10. matlab中的高阶导数,如何用matlab求函数的导数与高阶导数 需要技巧