热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

有什么用Map.ofEntries()而不是Map.of()

如何解决《有什么用Map.ofEntries()而不是Map.of()》经验,为你挑选了2个好方法。

从Map.java的文档-

Map.of()Map.ofEntries()静态工厂方法提供了一种方便的方法来创建不可改变的地图.

但是当我已经可以使用重载方法时 ......

Map.of("k1","v1","k2","v2","k3","v3"...);

... Map.ofEntries的用途是什么呢?

返回包含从给定条目中提取的键和值的不可变映射,并且条目本身不存储在映射中.

Naman.. 23

有关如何创建26个元素的地图的猜测?

您已经链接的Map中两个工厂方法的主要区别在于:

Map.ofEntries

返回一个不可变映射,其中包含从给定条目中提取的键和值(在计数中不受限制)

来自JEP-269:便利工厂收集方法:

对于大量条目,将提供一个API,该API将在给定任意数量的键值对的情况下创建Map实例:

Map.ofEntries(Map.Entry...)

虽然这种方法类似于List和Set的等效varargs API,但遗憾的是要求每个键值对都是盒装的.用于装箱键和值的方法适用于静态导入,这将使这更方便:

Map.Entry entry(K k, V v)

你对.of()Map中的方法的假设有些不正确,可能是因为虽然这可以用Java9编译:

List values = List.of(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); // note 11 elements here

Set keys = Set.of("z", "o", "tw", "th", "fo", "fi", "si", "se", "e", "n", "te");

另一方面,这不会:

Map map = Map.of("z", 0, "o", 1,
      "tw", 2, "th", 3, "fo", 4, "fi", 5,
      "si", 6, "se", 7, "e", 8, "n", 9, "te", 10); // this would not compile

之所以这样,是因为有一个varargs实现List.of,Set.of但是为Map这两个键创建一个类似的API,并且值也应按照JEP中的说明进行装箱.所以,使用类型的varargs创建了相同的Map.entry():

Map map = Map.ofEntries(Map.entry("z",0),
       Map.entry("o",1),Map.entry("t",2)...so on);

此外,Map.entry()还介绍了以下文件:9 -

返回Map.Entry包含给定键和值的不可变项.这些条目适合使用该Map.ofEntries()方法填充Map实例 .

Entry此方法创建的实例具有以下特征:

它们不允许使用null键和值.尝试使用null键或值创建它们会导致NullPointerException.

他们是不变的.在UnsupportedOperationException中对返回的Entry结果调用Entry.setValue().

它们不可序列化.

它们是基于价值的.调用者不应对返回实例的身份做出任何假设.此方法可以自由创建新实例或重用现有实例.因此,对这些实例的身份敏感操作(引用相等(==),标识哈希代码和同步)是不可靠的,应该避免.

这与最近介绍的不可变地图静态工厂方法的特征相似.



1> Naman..:

有关如何创建26个元素的地图的猜测?

您已经链接的Map中两个工厂方法的主要区别在于:

Map.ofEntries

返回一个不可变映射,其中包含从给定条目中提取的键和值(在计数中不受限制)

来自JEP-269:便利工厂收集方法:

对于大量条目,将提供一个API,该API将在给定任意数量的键值对的情况下创建Map实例:

Map.ofEntries(Map.Entry...)

虽然这种方法类似于List和Set的等效varargs API,但遗憾的是要求每个键值对都是盒装的.用于装箱键和值的方法适用于静态导入,这将使这更方便:

Map.Entry entry(K k, V v)

你对.of()Map中的方法的假设有些不正确,可能是因为虽然这可以用Java9编译:

List values = List.of(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); // note 11 elements here

Set keys = Set.of("z", "o", "tw", "th", "fo", "fi", "si", "se", "e", "n", "te");

另一方面,这不会:

Map map = Map.of("z", 0, "o", 1,
      "tw", 2, "th", 3, "fo", 4, "fi", 5,
      "si", 6, "se", 7, "e", 8, "n", 9, "te", 10); // this would not compile

之所以这样,是因为有一个varargs实现List.of,Set.of但是为Map这两个键创建一个类似的API,并且值也应按照JEP中的说明进行装箱.所以,使用类型的varargs创建了相同的Map.entry():

Map map = Map.ofEntries(Map.entry("z",0),
       Map.entry("o",1),Map.entry("t",2)...so on);

此外,Map.entry()还介绍了以下文件:9 -

返回Map.Entry包含给定键和值的不可变项.这些条目适合使用该Map.ofEntries()方法填充Map实例 .

Entry此方法创建的实例具有以下特征:

它们不允许使用null键和值.尝试使用null键或值创建它们会导致NullPointerException.

他们是不变的.在UnsupportedOperationException中对返回的Entry结果调用Entry.setValue().

它们不可序列化.

它们是基于价值的.调用者不应对返回实例的身份做出任何假设.此方法可以自由创建新实例或重用现有实例.因此,对这些实例的身份敏感操作(引用相等(==),标识哈希代码和同步)是不可靠的,应该避免.

这与最近介绍的不可变地图静态工厂方法的特征相似.



2> manouti..:

好吧,这很简单。Map.of()不是varargs方法。仅重载Map.of()最多10个条目。另一方面,Map.ofEntries()是varargs方法,因此允许您指定所需数量的条目。

他们可能刚刚添加了,Map.ofEntries()但是由于很多时候您只需要输入几个条目,它们也包含了这些Map.of()版本作为便捷方法,因此您不需要将每个键值对都包装在内Entry


@ user5047085 —键和值可以是不同的类型。在Java中,无法表示一个可变参数,强制奇数元素的类型为`K&#39;,偶数元素的类型为`V&#39;。因为所有元素的类型都为Entry (或更准确地说,Entry <?扩展了K,?扩展了V>),所以允许ofEntry 的子类型。 )。
推荐阅读
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 有没有一种方法可以在不继承UIAlertController的子类或不涉及UIAlertActions的情况下 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • 工作经验谈之-让百度地图API调用数据库内容 及详解
    这段时间,所在项目中要用到的一个模块,就是让数据库中的内容在百度地图上展现出来,如经纬度。主要实现以下几点功能:1.读取数据库中的经纬度值在百度上标注出来。2.点击标注弹出对应信息。3 ... [详细]
author-avatar
手机用户2502877341
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有