【Java】HashMap的简单使用(含小部分源码,get报错问题)

这篇具有很好参考价值的文章主要介绍了【Java】HashMap的简单使用(含小部分源码,get报错问题)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Java】HashMap的简单使用(含小部分源码,get报错问题),java,开发语言

  📝个人主页:哈__

期待您的关注 

【Java】HashMap的简单使用(含小部分源码,get报错问题),java,开发语言

一、HashMap的特点

【Java】HashMap的简单使用(含小部分源码,get报错问题),java,开发语言

二、HashMap的一些常用方法 

①.put(K key, V value) 将键(key)/值(value)映射存放到Map集合中(HashMap的key值不可重复,如果已经有了该key值的存在,那么就会更新该key的value值)

public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        map.put("Tom", 100);//向HashMap中添加元素
        map.put("Tom1", 700);//向HashMap中添加元素
        map.put("Tom", 100);//向HashMap中添加元素
        System.out.println(map);
    }

 【Java】HashMap的简单使用(含小部分源码,get报错问题),java,开发语言

 ②.get(Object key) 返回指定键所映射的值,没有该key对应的值则返回 null,即获取key对应的value。

 public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        map.put("Tom", 100);
        int scoreTom = map.get("Tom");// 获取key对应的value
        int scoreJerry = map.get("Jerry");// 获取key对应的value
        System.out.println(scoreTom);
        System.out.println(scoreJerry);
    }

执行完之后报了一个错。意思就是空指针异常。

Exception in thread "main" java.lang.NullPointerException

为什么会这样我们到源码中查看。进入到get方法。

 public V get(Object key) {
        Node<K,V> e;
        return (e = getNode(hash(key), key)) == null ? null : e.value;
    }

我们到这一层就可以了,仔细看一看,这个get方法返回的是一个三元表达式,如果e等于null就返回null,否则就返回key对应的value,呀?仔细一看没问题啊,方法也没有将异常抛出,我想要获取Jerry的信息,但是Jerry不存在,返回空值,这怎么突然给我报错了?不要急,既然这里没有抛出异常,那这个异常就要返回我们的主程序当中了。我们来研究这两行代码。

HashMap<String, Integer> map = new HashMap<String, Integer>();
int scoreJerry = map.get("Jerry");// 获取key对应的value

map的泛型是String,Integer。我们调用map的get方法传入一个String类型字符串,返回的应该是一个Integer类型的对象。好,既然返回的是一个Integer类型的对象,并且我是用的是int来接收这个Integer类型的对象,这个样子就是一个拆箱的过程,将Integer转为int,调用的是Integer的valueOf方法。如果你的Integer压根不存在,那么null怎么调用valueOf去进行拆箱操作?int类型也无法接收一个null值呀,真相大白。

这里不太理解的可以看我的另一篇文章,可能对你有启发。

【Java】Integer 什么是128陷阱(源码分析)-CSDN博客

我们将int改为Integer之后,打印如下。 

【Java】HashMap的简单使用(含小部分源码,get报错问题),java,开发语言

③. size()  返回Map集合中数据数量,准确说是返回key-value的组数。

public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        map.put("Tom", 100);
        map.put("Jim", 90);
        map.put("Sam", 91);
        System.out.println(map);
        System.out.println(map.size()); //3
    }

 ④:clear() 清空Map集合

public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        map.put("Tom", 100);
        map.put("Jim", 90);
        map.put("Sam", 91);
        map.clear();// 清空map中的key-value
        System.out.println(map.size()); //0
    }

 ⑤:isEmpty () 判断Map集合中是否有数据,如果没有则返回true,否则返回false

public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        map.put("Tom", 100);
        map.put("Jim", 90);
        map.put("Sam", 91);
        System.out.println(map.isEmpty()); //false
        map.clear();// 清空map中的key-value
        System.out.println(map.isEmpty()); //true
    }

 ⑥:remove(Object key) 删除Map集合中键为key的数据并返回其所对应value值。

public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        map.put("Tom", 100);
        map.put("Jim", 90);
        map.put("Sam", 91);
        System.out.println(map);
        map.remove("Tom");
        System.out.println(map);

    }

【Java】HashMap的简单使用(含小部分源码,get报错问题),java,开发语言 

⑦:containsKey(Object key) Hashmap判断是否含有key

public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        map.put("Tom", 100);
        map.put("Jim", 90);
        map.put("Sam", 91);
        System.out.println(map.containsKey("Tom")); //true
        System.out.println(map.containsKey("Jerry")); //false

    }

 ⑧:containsValue(Object value) Hashmap判断是否含有value:

public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        map.put("Tom", 100);
        map.put("Jim", 90);
        map.put("Sam", 91);
        map.put("Jerry",100);
        System.out.println(map.containsValue(100)); //true
        System.out.println(map.containsValue(88));  //false

    }

 ⑨:Hashmap添加另一个同一类型的map下的所有数据

 public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        HashMap<String, Integer> map2 = new HashMap<String, Integer>();
        map.put("Tom", 100);
        map.put("Jim", 90);
        map.put("Sam", 91);
        map.put("Jerry",100);

        map2.putAll(map);
        map2.put("美羊羊",50);
        System.out.println(map);
        System.out.println(map2);

    }

 【Java】HashMap的简单使用(含小部分源码,get报错问题),java,开发语言

 基本的使用就是这些了。文章来源地址https://www.toymoban.com/news/detail-851710.html

到了这里,关于【Java】HashMap的简单使用(含小部分源码,get报错问题)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java】JDK1.8 HashMap源码,put源码详细讲解

       📝个人主页:哈__ 期待您的关注  在Java中,HashMap结构是被经常使用的,在面试当中也是经常会被问到的。这篇文章我给大家分享一下我对于HashMap结构源码的理解。 HashMap的存储与一般的数组不同,HashMap的每一个元素存储的并不是一个值,而是一个引用类型的Node结点,这

    2024年04月13日
    浏览(46)
  • 【HashMap】| 深度剥析Java SE 源码合集Ⅱ | 你会吗?

    HashMap 是 Map 接口的接口实现类,它采用哈希算法实现,是 Map 接口最常用的实现类。 由于底层采用了哈希表存储数据,所以要求键不能重复,如果发生重复,新的值会替换旧的值。 HashMap 在 查找、删除、修改方面都有非常高的效率 。 HashMap 底层实现采用了哈希表,既集合了

    2024年01月22日
    浏览(38)
  • 【深入挖掘Java技术】「源码原理体系」盲点问题解析之HashMap工作原理全揭秘(下)

    在阅读了上篇文章《【深入挖掘Java技术】「源码原理体系」盲点问题解析之HashMap工作原理全揭秘(上)》之后,相信您对HashMap的基本原理和基础结构已经有了初步的认识。接下来,我们将进一步深入探索HashMap的源码,揭示其深层次的技术细节。通过这次解析,您将更深入地

    2024年02月01日
    浏览(47)
  • 调式源码解决 seata 报错 can not get cluster name 问题

    最近在使用 Spring Cloud 整合分布式事务 seata ,项目启动之后,控制台一直报错: 无法在注册配置上找到 service.vgroupMapping.nacos-provide-order-seata-service-group 配置。 搭建 seata 服务,需要用到配置中心,将配置文件 config.txt 上传到 Nacos 配置中心,其中有一项配置是: 这个配置和控制台

    2024年02月01日
    浏览(43)
  • 使用java处理视频最方便最简单的去水印方案 附上java源码

    本文仅仅用于编程学习研究,不做其他用途。    不知道怎么回事 总审核不过 首先,对输入的短链接进行URL解码,并将解码后的字符串存储在\\\"decodeUrl\\\"变量中。 接着,创建一个HashMap类型的数据\\\"data\\\",用于存储从哔哩哔哩网站中获取的视频信息。 调用HttpUtil类中的\\\"getGetLocat

    2024年02月13日
    浏览(71)
  • Java HashMap 和 HashSet 的高效使用技巧

    HashMap 是一种哈希表,它存储键值对。键用于查找值,就像数组中的索引一样。 HashMap 的优势在于它可以使用任何类型作为键,并且查找速度很快。 HashMap 可以存储任何类型的键和值。例如,您可以存储 Integer 键和 String 值: HashMap 是一种强大的数据结构,可用于存储各种类型

    2024年03月11日
    浏览(44)
  • 【Java 基础篇】深入理解Java HashMap:使用注意事项和性能优化

    Java是一种广泛使用的编程语言,而集合是Java编程中不可或缺的一部分。在Java的集合框架中,HashMap是一个常用的数据结构,用于存储键值对。本文将深入介绍HashMap集合,从基础到高级用法,帮助您更好地理解和利用它。 HashMap是Java集合框架中的一个类,它实现了 Map 接口,用

    2024年02月06日
    浏览(42)
  • Java代码优化案例2:使用HashMap代替List进行数据查找

    在开发过程中,我们经常需要在一个集合中查找某个元素。一种常见的做法是使用List来存储数据,然后通过循环遍历List来查找目标元素。然而,当数据量较大时,这种做法效率较低。我们可以通过使用HashMap来优这个过程。 1. 原始代码实现 上述代码使用List存储学生对象,然

    2024年02月11日
    浏览(41)
  • Java面试题:为什么HashMap不建议使用对象作为Key?

    HashMap 是一种基于哈希表的动态数据结构,它允许使用任意不可变对象作为键(key)来存储和检索数据。然而,在某些情况下,使用对象作为 HashMap 的键可能会遇到一些问题。   首先,我们需要明确对象作为 HashMap 的键需要满足一些条件: 不可变性:对象的属性不能被修改,

    2024年04月22日
    浏览(55)
  • you-get:一行命令下载视频和Python简单使用you-get

    安装you-get库如下所示 一般的you-get 下载命令如下所示 例如:you-get https://www.bilibili.com/video/BV13V41117xc?spm_id_from=333.337.search-card.all.click 效果如下: 下载命令:-l使用如下所示。 例如 效果如下所示。 运行的代码如下所示。 可以看到视频的下载信息。 视频具有下载信息的格式。

    2024年01月17日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包