gpt4 book ai didi

java - 为什么 Java Collections 有 0 或 1 个元素的助手,但没有更多元素?

转载 作者:行者123 更新时间:2023-12-02 04:35:00 26 4
gpt4 key购买 nike

如果我想要一个空映射或一个元素映射,Java Collections 有一种方法可以实现这一点。为什么没有一种方法可以处理多个元素?创建包含 2 个元素的静态最终 map 的最佳方法是什么?我知道我可以做这样的事情:

private static final Map<String, String> MAP = new HashMap<String, String>() {
{ put("a", "b"); put("c", "d"); }
};

但是 Eclipse 提示了 serialVersionUID...

最佳答案

Collections 具有 0 和 1 条目映射的方法的原因是因为它们是特殊情况......例如,空的 Map 是一个不可变的单例。

不过,对于您想做的事情,我强烈建议使用 Guava 。我认为它的 Immutable* 集合(特别是 ImmutableMap)就是你想要的:

private static final ImmutableMap<String, String> MAP = ImmutableMap.of(
"a", "b",
"c", "d");

对于小 map ,您可以执行上述操作,对于较大的 map ,您可以编写:

private static final ImmutableMap<String, String> MAP = 
ImmutableMap.<String, String>builder()
.put("a", "b")
.put("b", "c")
...
.put("y", "z")
.build();

如果您不使用 Guava,您可能仍然希望确保此 map 无法更改。这丑陋得多:

private static final Map<String, String> MAP;

static {
Map<String, String> temp = new HashMap<String, String>();
temp.put("a", "b");
temp.put("b", "c");
MAP = Collections.unmodifiableMap(temp);
}

关于java - 为什么 Java Collections 有 0 或 1 个元素的助手,但没有更多元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4100502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com