首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java: Map.of<"k1","v1"> vs Collections.singletonMap("k1","v1")

Java: Map.of<"k1","v1"> vs Collections.singletonMap("k1","v1")
EN

Stack Overflow用户
提问于 2022-05-20 07:03:14
回答 1查看 274关注 0票数 0

Map.of("key", "value")Collections.singletonMap("key", "value")有什么区别吗?

如果我只需要存储Java 9和更高版本的一个映射,那么是否有哪个做法比另一个更好呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-20 07:09:42

Map.of

Map.of只能在Java9和更高版本中使用。它可以用来存储0到10个键值对。请参见https://docs.oracle.com/javase/9/docs/api/java/util/Map.html#of--和下面的内容。另见https://docs.oracle.com/javase/9/docs/api/java/util/Map.html#immutable

-- Map.of()和Map.ofEntries()静态工厂方法为创建不可变映射提供了一种方便的方法。这些方法创建的Map实例具有以下特征:

  • ,它们在结构上是不变的。无法添加、删除或更新键和值。调用任何mutator方法都会导致抛出UnsupportedOperationException。但是,如果包含的键或值本身是可变的,这可能会导致Map的行为不一致,或者其内容看起来会发生变化。
  • 不允许空键和值。如果在创建时所有键和值都是NullPointerException.
  • They,则使用空键或值创建它们的尝试是可序列化的,则拒绝重复键。传递给静态工厂方法的重复键导致映射的IllegalArgumentException.
  • The迭代顺序未指定,且可能发生更改。它们是基于价值的。调用者不应假设返回实例的标识。工厂可以自由地创建新实例或重用现有实例。因此,对这些实例(引用相等(==)、身份哈希码和同步)进行身份敏感操作是不可靠的,应该避免。它们按序列化窗体页上指定的方式序列化.

类似地,也有List.ofSet.of

Collections.singletonMap

Collections.singletonMap是从Java1.3开始提供的。它只能用于存储一个键值对。见https://docs.oracle.com/javase/9/docs/api/java/util/Collections.html#singletonMap-K-V-

一般来说,单例总是包含一个值。单例类是只有一个实例的类。单例映射有一个映射,单例列表有一个元素,依此类推。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72314838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档