Java源码详解零:HashMap介绍

6 篇文章 1 订阅
6 篇文章 1 订阅

Java详解(0):HashMap介绍,HashMap的迭代,HashMap的线程安全问题


本系列是Java源码分析,专栏地址:Java源码分析


HashMap介绍

HashMap是Java基于哈希表实现的Map接口。Map的意思是key-value的集合。
有几个注意事项:

  • HashMap不能包含重复键
  • HashMap允许null值和null键
  • HashMap是一个无序集合,它不保证元素的顺序
  • HashMap不是线程安全的

HashMap的使用示例如下:

import java.util.HashMap;
import java.util.Map;

public class hello {

    public static void main(String[] args) {
        // Creating a HashMap
        Map<String, Integer> numberMapping = new HashMap<>();

        // Adding key-value pairs to a HashMap
        numberMapping.put("One", 1);
        numberMapping.put("Two", 2);
        numberMapping.put("Three", 3);

        // Add a new key-value pair only if the key does not exist in the HashMap, or is mapped to `null`
        numberMapping.putIfAbsent("Four", 4);

        System.out.println(numberMapping);
    }
}

输出结果应该如下:

{One=1, Four=4, Two=2, Three=3}

HashMap常用的方法有:

  • 检查HashMap是否为空| isEmpty()
  • 检查HashMap的大小| size()
  • 检查HashMap中是否存在给定的键| containsKey()
  • 检查HashMap中是否存在给定值| containsValue()
  • 在HashMap中获取与给定键关联的值 |get()
  • 在HashMap中修改与给定键关联的值| put()
  • 从HashMap中删除一个键 |remove(Object key)
  • 仅当HashMap与给定值相关联时才从HashMap中删除密钥| remove(Object key, Object value)
  • Map接口提供了检索键值对,键集和值集合的方法| entrySet() keySet() values()

HashMap的迭代

想要迭代一个HashMap有以下这些方法:

  • 使用forEach
  • 使用lambda表达式
  • 使用iterator()
  • 使用keySet()

HashMap的线程安全问题

HashMap不是线程安全的,
参考:

想要使用线程安全的HashMap,可以使用Collections.synchronizedMap
另一个办法就是在HashMap的get和put方法前加锁,也就是synchronized 关键字

下一篇文章:Java详解(2):HashMap源码分析


参考资料:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值