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

襄阳棋牌网站建设外贸网站建设流程

襄阳棋牌网站建设,外贸网站建设流程,网站制作周期,安徽建设相关网站1. 什么是 HashMap? HashMap是Java集合框架中的一种数据结构,它实现了Map接口,用于存储键值对(Key-Value Pair)。HashMap允许null键和null值,并且不保证元素的顺序。 --- 2. HashMap 的工作原理 2.1 内…

1. 什么是 HashMap?

HashMap是Java集合框架中的一种数据结构,它实现了Map接口,用于存储键值对(Key-Value Pair)。HashMap允许null键和null值,并且不保证元素的顺序。

---

2. HashMap 的工作原理

2.1 内部结构
  • 数组 + 链表/红黑树:HashMap内部使用一个数组(称为table)来存储数据,每个数组元素是一个链表或红黑树的头节点。
  • 哈希函数:通过哈希函数将键(Key)映射到数组的索引位置。
2.2 插入数据
  • 计算哈希值:使用键的hashCode()方法计算哈希值。
  • 计算索引:通过哈希值和数组长度计算索引位置。
  • 处理冲突:如果索引位置已经有元素,则通过链表或红黑树处理冲突。
  • 插入数据:将键值对插入到链表或红黑树中。
2.3 查找数据
  • 计算哈希值:使用键的hashCode()方法计算哈希值。
  • 计算索引:通过哈希值和数组长度计算索引位置。
  • 查找数据:在链表或红黑树中查找键值对。
2.4 扩容机制
  • 负载因子:HashMap有一个负载因子(默认0.75),当元素数量超过容量 * 负载因子时,HashMap会进行扩容。
  • 扩容过程:创建一个新的数组,将旧数组中的元素重新哈希到新数组中。

---

3. HashMap 的特点

3.1 优点
  • 快速查找:通过哈希函数,HashMap可以在平均O(1)的时间复杂度内查找元素。
  • 灵活:允许null键和null值。
3.2 缺点
  • 无序:HashMap不保证元素的顺序。
  • 线程不安全:HashMap不是线程安全的,多线程环境下需要使用ConcurrentHashMap。

---

4. 常见问题

4.1 HashMap 和 Hashtable 的区别?
  • HashMap:允许null键和null值,线程不安全。
  • Hashtable:不允许null键和null值,线程安全。
4.2 HashMap 的负载因子为什么是0.75?
  • 负载因子:0.75是时间和空间的一个平衡点,既不会浪费太多空间,也不会导致频繁扩容。
4.3 HashMap 如何处理哈希冲突?
  • 链表:Java 8之前,HashMap使用链表处理冲突。
  • 红黑树:Java 8之后,当链表长度超过8时,HashMap会将链表转换为红黑树,提高查找效率。

---

5. 进一步优化与迭代方向

  • 使用合适的初始容量:根据预估的元素数量设置初始容量,减少扩容次数。
  • 选择合适的负载因子:根据实际需求调整负载因子,平衡时间和空间。
  • 线程安全:在多线程环境下使用ConcurrentHashMap,避免线程安全问题。

6.手写一个哈希表


class HashNode<K,V> {//定义哈希表的节点类K key;V value;HashNode<K,V> next;//用于处理哈希冲突的链表public HashNode(K key, V value){this.key = key;this.value = value;this.next = null;}public static void main(String[] args) {MyHashMap<String, Integer> map = new MyHashMap<>();map.put("Apple", 1);map.put("Banana", 2);map.put("Orange", 3);System.out.println(map.get("Banana")); // 输出: 2map.remove("Banana");System.out.println(map.get("Banana")); // 输出: nullSystem.out.println(map.size()); // 输出: 2}
}
//计算键的哈希值
class MyHashMap<K,V> {private static final int DEFAULT_CAPACITY = 16;//默认容量private static final float LOAD_FACTOR = 0.75f; // 负载因子private HashNode<K, V>[] table;//哈希表数组private int size;//当前元素数量public MyHashMap(){table = new HashNode[DEFAULT_CAPACITY];size = 0;}//计算键的哈希值private int hash(K key){return key == null ? 0 :Math.abs(key.hashCode() % table.length);}//插入键值对public void put(K key,V value){int index = hash(key);HashNode<K,V> node = table[index];//遍历链表,检查是否存在相同的键while (node != null){if(node.key.equals(key)){node.value = value;//更新值return;}node = node.next;}//插入到新节点到链表头部HashNode<K,V> newNode = new HashNode<>(key,value);newNode.next = table[index];table[index] = newNode;size++;//检查是否需要扩容if ((float) size/table.length > LOAD_FACTOR){resize();}}//查找键相对应的值public V get(K key){int index = hash(key);HashNode<K,V> node = table[index];//遍历链表,查找键while (node != null){if (node.key.equals(key)){return node.value;}node = node.next;}return null;//未找到}//删除键值对public void remove(K key){int index = hash(key);HashNode<K,V> node = table[index];HashNode<K,V> prev = null;//遍历链表,查找键while (node != null){if(node.key.equals(key)){if(prev == null){table[index] = node.next;//删除链表头部}else {prev.next = node.next;//删除链表的中间或尾部}size--;return;}prev = node;node = node.next;}}//扩容哈希表private void resize(){int newCapacity = table.length*2;HashNode<K,V>[] newTable = new HashNode[newCapacity];//重新载入哈希所有元素for (HashNode<K,V> node : table){while(node != null){int newIndex = hash(node.key);HashNode<K,V> next = node.next;node.next = newTable[newIndex];newTable[newIndex] = node;node = next;}}table = newTable;}//获取当前元素数量public  int size(){return size;}}

http://www.dtcms.com/wzjs/393491.html

相关文章:

  • 从用户旅程角度做网站分析百度推广助手官方下载
  • 怎样做黄色网站公司免费推广网站
  • 排名好的徐州网站开发建站优化公司
  • 网站设计师专业百度产品
  • 做个外贸网站设计深圳seo优化电话
  • 如何在谷歌上做网站湖南好搜公司seo
  • 网站内链建设全网推广哪家正宗可靠
  • 怎么查网站的备案信息seo网络推广师招聘
  • 手机网站用什么软件做宁海关键词优化怎么优化
  • 北京华夏工程建设监理公司网站百度推广首页登录
  • 二手房网站排行优秀营销软文100篇
  • 免费ppt模板免费网站怎么做推广比较成功
  • 做阿里巴巴网站运营设计公司排名前十强
  • 甘肃系统建站怎么用优搜云seo
  • 太原做网站培训百度收录提交网址
  • 网站建设的行业资讯百度免费收录提交入口
  • 外卖网站建设的毕业论文网上怎么发布广告
  • 17网站一起做网店新塘网络营销网站平台有哪些
  • 网站建设文章缩略图长沙网络推广哪家
  • 做一个网站一般需要多少钱网站优化包括哪些内容
  • wordpress主体开发网站seo分析报告
  • 网站后台账号密码忘记了百度新闻网页
  • 企业网站内容运营方案策划网络营销的盈利模式
  • 做视频网站需要什么证搜索引擎地址
  • 优设网app官方下载seo优化方向
  • 黄岛网站建设价格百度推广费用
  • 媒介盒子网站是哪家公司做的百度提交入口网址
  • 北京优化词网站长沙正规关键词优化价格从优
  • 免费网站建设平台 iis东莞关键词排名优化
  • 国外经典手机网站设计站长工具seo综合查询怎么关闭