十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本篇文章为大家展示了java中hashmap怎么实现在初始化时赋初值,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
创新互联公司从2013年成立,是专业互联网技术服务公司,拥有项目成都网站设计、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元宜秀做网站,已为上家服务,为宜秀各地企业和个人服务,联系电话:18980820575
Java中的HashMap是一种常用的数据结构,一般用来做数据字典或者Hash查找的容器。
一般我们初始化并赋初值是这样做的:
HashMapmap = new HashMap<>(); map.put("name", "yanggb"); map.put("lover", "huangq");
但是有时候我们会想在一个表达式中完成初始化并赋初值的操作:
HashMapmap = new HashMap<>() { { put("name", "yanggb"); put("lover", "huangq"); } };
这里用了双括号【{{}}】来初始化,使代码简洁易读。第一层括弧实际是定义了一个匿名内部类 (Anonymous Inner Class),第二层括弧实际上是一个实例初始化块 (Instance Initializer Block),这个块在内部匿名类构造时被执行。这种写法的好处很明显,就是一目了然。但是这种写法可能导致这个对象串行化失败的问题。
其一,因为这种方式是匿名内部类的声明方式,所以引用中持有着外部类的引用。所以当串行化这个集合时,外部类也会被不知不觉的串行化,而当外部类没有实现Serialize接口时,就会报错。
其二,在上面的例子中,其实是声明了一个继承自HashMap的子类,然而有些串行化方法,例如要通过Gson串行化为json,或者要串行化为xml时,类库中提供的方式,是无法串行化Hashset或者HashMap的子类的,也就导致了串行化失败。解决办法是重新初始化为一个HashMap对象【new HashMap(map);】,这样就可以正常进行初始化了。
另外要注意的是,这种使用双括号进行初始化的语法在执行效率上要比普通的初始化写法要稍低。
最后,这个使用双括号进行初始化的语法同样适用于ArrayList和Set等集合。
上述内容就是java中hashmap怎么实现在初始化时赋初值,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。