java HashMap

2025-05-09 20:15:51

HashMap是最常用的Map实现,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null(多条会覆盖,也就是key不能重复);允许多条记录的值为 Null。非同步的也就是说线程不安全。

java HashMap

3、HashMap继承的类与实现的接口1、HashMap接口示意图:如下所示2、Map接口,方法的含义很简单,基本上看个方法名就知道了,后面会在HashMap源码分析里详细说明3、AbstractMap抽象类中定义的方法

java HashMapjava HashMap

2、数组长度是固定的,HashMap 可以无限put(k,v) ,为什么?HashMap 的元素个数大于threshold的时候,会进行resize() 扩容

java HashMap

4、Hash 冲突是什么?怎么解决这个问题?1、Hash 冲突: 假如一个学校有366个同学,一年365天,那么至少有怎剑词阶两个同学是同一天生日,这就是hash冲突。用代码来说,不同的key 经过计算p = tab[i = (n - 1) & hash] 对应同一个p2、如何解决:p在有的翻译文档中叫桶,一个桶可以装多个,怎么装? 链表或者红黑树。3、下图代码中 else if 部分是红黑树else 部分是链表 ,链表中如果冲突元素个>=TREEIFY_THRESHOLD-1,会将链表转换成红黑树。因为元素个数很多时,红黑树比链表性能更好。

java HashMapjava HashMap

7、验证ConcurrentHashMap 线程安全。

java HashMap

第三步:HashMap使用实例

1、常用基本操作package com.pichen.罕铞泱殳collection;import java.util.HashMap;import java.util.Map;public class Main { public static void main(String[] args) { Map<String, Integer> map = new HashMap<String, Integer>(); //put方法 map.put("A", 5); map.put("B", 6); map.put("C", 7); map.put("D", 8); //重写了toString方法 System.out.println(map); //size方法 System.out.println(map.size()); System.out.println(map.containsKey("A")); System.out.println(map.containsValue(6)); System.out.println(map.get("B")); //remove map.remove("C"); System.out.println(map); //key集合 for(String str:map.keySet()){ System.out.print(str + " "); } System.out.println(); //value集合 for(Integer obj:map.values()){ System.out.print(obj + " "); } System.out.println(); //key-value集合 for(Map.Entry<String, Integer> entry:map.entrySet()){ System.out.print(entry.getKey() + ": " + entry.getValue() + ", "); } }}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢