Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 初始化番石榴ImmutableMap_Java_Dictionary_Guava - Fatal编程技术网

Java 初始化番石榴ImmutableMap

Java 初始化番石榴ImmutableMap,java,dictionary,guava,Java,Dictionary,Guava,Guava为初始化地图提供了一个很好的快捷方式。但是,当我的映射初始化为9个条目时,我会出现以下编译器错误(EclipseIndigo) 类型ImmutableMap中(K,V,K,V,K,V,K,K,K,K,V)的方法不适用于参数 (字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串) ImmutableMap myMap=ImmutableMap.of( “键1”、“值1”, “键2”、“值2”, “

Guava为初始化地图提供了一个很好的快捷方式。但是,当我的映射初始化为9个条目时,我会出现以下编译器错误(EclipseIndigo)

类型
ImmutableMap
中(K,V,K,V,K,V,K,K,K,K,V)的
方法不适用于参数
(字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串)

ImmutableMap myMap=ImmutableMap.of(
“键1”、“值1”,
“键2”、“值2”,
“键3”、“值3”,
“键4”、“值4”,
“键5”、“值5”,
“键6”、“值6”,
“键7”、“值7”,
“键8”、“值8”,
“键9”、“值9”
);
消息似乎说

ImmutableMap的最大大小为四对键、值

显然,情况并非如此,但我不知道如何增加初始值设定项的大小


有人能告诉我遗漏了什么吗?

请注意,您的错误消息只包含五对
K,V
对,总共10个参数。这是故意的;ImmutableMap类提供了六种不同的
of()
方法,接受零到五个键值对。没有(…)
重载接受varags参数,因为
K
V
可以是不同的类型

您需要一个
ImmutableMap.Builder

ImmutableMap<String,String> myMap = ImmutableMap.<String, String>builder()
    .put("key1", "value1") 
    .put("key2", "value2") 
    .put("key3", "value3") 
    .put("key4", "value4") 
    .put("key5", "value5") 
    .put("key6", "value6") 
    .put("key7", "value7") 
    .put("key8", "value8") 
    .put("key9", "value9")
    .build();
ImmutableMap myMap=ImmutableMap.builder()
.put(“键1”、“值1”)
.put(“键2”、“值2”)
.put(“键3”、“值3”)
.put(“键4”、“值4”)
.put(“键5”、“值5”)
.put(“键6”、“值6”)
.put(“键7”、“值7”)
.put(“键8”、“值8”)
.put(“键9”、“值9”)
.build();

如果地图很短,您可以执行以下操作:

ImmutableMap.of(key, value, key2, value2); // ...up to five k-v pairs
如果更长,则:

ImmutableMap.builder()
   .put(key, value)
   .put(key2, value2)
   // ...
   .build();
“放”已经,不要用它,用。代替

ImmutableMap<String, String> myMap = ImmutableMap.of(
    "city1", "Seattle",
    "city2", "Delhi"
);
ImmutableMap myMap=ImmutableMap.of(
“城市1”、“西雅图”,
“城市2”、“德里”
);

感谢您的快速回答。我决定试试番石榴,因为我不想输入标准地图初始值设定项所需的所有“puts”。那个主意就到此为止@user903724:在这里使用Guava的主要原因是强大的不变性,依我看,这或者说稍微减少了内存消耗——而且生成器语法非常流畅。好吧,你可能还有多个PUT,但他们现在使用的是fluent API,因此,无需为每个
重复
myMap
。请注意Jon的示例代码可以是
公共静态final
,并且仍然有效,不需要帮助器方法或
静态{}
初始值设定项!除了可读性之外,您还可以对多达五个键值对使用
ImmutableMap.of
static factory。那么你必须使用生成器。不。不推荐使用ImmutableMap.put。Jon Skeet正在使用ImmutableMap.Builder.put,这正是我们应该如何初始化包含5个以上元组的映射。
ImmutableMap<String, String> myMap = ImmutableMap.of(
    "city1", "Seattle",
    "city2", "Delhi"
);