当前位置: 首页 > 面试题库 >

HashMap的构建器

齐鸿光
2023-03-14
问题内容

Guava为Java类型提供了很棒的工厂方法,例如Maps.newHashMap()

但是,还有Java Maps的构建器吗?

HashMap<String,Integer> m = Maps.BuildHashMap.
    put("a",1).
    put("b",2).
    build();

问题答案:

由于Java 9
Map接口包含:

  • Map.of(k1,v1, k2,v2, ..)
  • Map.ofEntries(Map.entry(k1,v1), Map.entry(k2,v2), ..)

这些工厂方法的局限性在于:

  • 不能将nulls用作键和/或值(如果您需要存储null,请查看其他答案)
  • 产生 不变的 地图

如果我们需要 可变 地图(例如HashMap),则可以使用其复制构造函数,并让其复制通过创建的地图内容Map.of(..)

Map<Integer, String> map = new HashMap<>( Map.of(1,"a", 2,"b", 3,"c") );


 类似资料:
  • 我有一个HashMap,一个键作为某个类的对象,一个值作为另一个HashMap,它的键是一个字符串,值是一个双倍: 我需要一个循环,将键(对象)和值(HashMaps)添加到这个HashMap,但我不能在循环中创建一个新的HashMap变量作为它的值。本质上,每个MyClass对象都必须具有具有相应Double的Strings。 这可能吗?这有什么意义吗??

  • 问题内容: 我试图创建一个地图列表。在下面的代码中,我期望得到 但是,我只有 如何避免覆盖第一张地图?这是我的代码: 谢谢! ========================= 作为来自过程语言背景(SAS)的Java学习者,我花了很多时间学习和试验ArrayList,LinkedList,Map,LinkedMap等- 我无法使它正常工作。而且我不了解我的有限知识。现在,以下所有答案都很出色!他

  • 第一个类称为FileReader,它读取一个逐行写入的txt文件,我们需要的每个字段都用“;”分隔,例如(“哥伦比亚大学”;“美国”;78.86;2012)。每行包含2个字符串(大学名和国家)和2个数字(分数和年份)。FileReader类在读取txt文件后,在ArrayList中返回其内容。 该作业的第二个类称为UniversityScores,它有4个字段(uniname、country、sc

  • GraphX的Graph对象是用户操作图的入口。前面的章节我们介绍过,它包含了边(edges)、顶点(vertices)以及triplets三部分,并且这三部分都包含相应的属性,可以携带额外的信息。 1 构建图的方法 构建图的入口方法有两种,分别是根据边构建和根据边的两个顶点构建。 根据边构建图(Graph.fromEdges) def fromEdges[VD: ClassTag, ED: Cl

  • 问题内容: 我在一个项目中使用了一个生成器类。 假设我有一个基于以下类的构建器。 我需要新的构建基于克隆,使包含所有已经存在的价值。 在我的构造函数中,我基于已设置的字段初始化一些字段(未直接设置)。 -我正在初始化这个领域。如果存在,则将设置该值或将设置。 -我也在同一构造函数中初始化此字段。 最重要的是,我在地图上放置了一些必填字段。我不确定这样做的正确方法是什么。不过,我需要补充和成图。(一

  • 在我的代码中,我有一个ArrayList contentChecklist,其中存储HashMap对象。在列表中添加所有HashMap对象之后,如果我从列表中获取最后一个HashMap对象并将其存储在新的HashMap对象(CheckListMaptemp)中,并使用