目 录
前言
一、HashMap是什么?
二、使用步骤
1.解析一下它实现的原理
编辑
2.实际开发使用
总结
前言
本章,只是大概记录一下hashMap的简单使用方法,以及理清一下hashMap的put方法的原理,以及get方法的原理。
一、HashMap是什么?
首先,要介绍一下它的内部组成,它是哈希表结构的,非常好地结合了数组和链表的优点。当链表长度超过8
时,链表转换就会转化为红黑树。数组中的每个元素都是链表,由Node内部类(实现Map.Entry<K,V>
接口)实现,它主要通过put方法存储和get方法来进行获取。
二、使用步骤
1.解析一下它实现的原理
首先,它先根据键值key计算出hash值,得到了插入的数组索引
第2步,就是通过这个索引查找这个数组,如果数组为空,则直接插入一个新的数组;如果不为空,说明之前是有的了,则判断key,如果key是相同的,则直接赋新值,如果不是,则直接来到数组后面的链表
第3步,来到了链表家里了,则是首先判断是否已经为treeNode了,如果还没,则开始遍历链表准备插入,如果长度小于8,则可以插入到链表中,若key存在,则直接覆盖。如果长度大于8,则它要去到红黑树家里了,转换为红黑树,插入键值对。
2.实际开发使用
我们经常在开发中,需要保存某些字段的值时,然后到下一步,需要使用时,则在把它取出来,这时候,使用它就是比较合适的了。
第一步,先定义一个map。
//map存储订单详情的商品编码我方促销编码,商品第三方购买数量
Map<String,Integer> thirdPrdQtyMap = new HashMap<>(); // 小红书购买数量
第二步,则是使用put方法存值。
logger.info("小红书商家编码====="+thirdPrd.getErpcode());
MdPromotionBean bean = mdPromotionDao.getById(thirdPrd.getErpcode()); // 小红书促销对象 商家编码
BizAssert.isTrue(bean!=null,TextUtils.format("小红书商品编码{}在系统中不存在",thirdPrd.getErpcode()));
if(thirdPrdQtyMap.containsKey(bean.getId())){
thirdPrdQtyMap.put(bean.getId(),thirdPrdQtyMap.get(bean.getId()).intValue()+thirdPrd.getQty());
}else{
thirdPrdQtyMap.put(bean.getId(),thirdPrd.getQty());
}
第三步,最后使用get方法获值。
orderItemssHeadBean.setQty(thirdPrdQtyMap.get(ecBean.getId())); // 订单的商品数量,用map的
代码如下(示例):
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
总结
本章,只是大概记录一下hashMap的简单使用方法,以及理清一下hashMap的put方法的原理,以及get方法的原理。