Hashmap

  • Hashmap是一个K-V键值对的散列表
  • 继承了AbstractMap 实现了Map,Cloneable, Serializable接口
  • Hashmap不是线程安全的,K,V均可为null。
  • HashMap(int initialCapacity, float loadFactor):构造一个带指定初始容量和加载因子的空 HashMap。
    在这里提到了两个参数:初始容量,加载因子。这两个参数是影响HashMap性能的重要参数,其中容量表示哈希表中桶的数量,初始容量是创建哈希表时的容量,加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度,它衡量的是一个散列表的空间的使用程度,负载因子越大表示散列表的装填程度越高,反之愈小。

Hashmap的使用

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class test {
    public static void main(String[] args) {
        //实例化一个hashmap对象
        HashMap hashMap=new  HashMap<>();
        //生成数据
        hashMap.put("andy", 10);
        hashMap.put("cindy",20);
        hashMap.put("kitty",30);
        hashMap.put("james",30);
        //打印
        System.out.println(hashMap+"");
        //打印size
        System.out.println("size="+hashMap.size());
        //打印是否含有某个键
        System.out.println(hashMap.containsKey("cindy"));
        
        //删除某个键
        hashMap.remove("kitty");
        System.out.println(hashMap+"");
        
        //使用迭代器遍历
        Iterator iterator=hashMap.entrySet().iterator();
        while(iterator.hasNext()) {
            Map.Entry entry=(Entry) iterator.next();
            System.out.println("key="+entry.getKey()+"value="+entry.getValue());
        }
        //清空hashmap
        hashMap.clear();
        
        //判断是否为空
        System.out.println(hashMap.isEmpty());
    }
}

HashMap的原理

Hashmap由数组和链表组成, 数组存放的key-value对,通过hash值找到key对应的value,再通过链表对hash值相同的进行查找,最后通过拉链法解决哈希冲突


HashMap的原理

你可能感兴趣的:(Hashmap)