如果你试图在Java中创建一个超过10个键/值对的Map ,你可能会遇到一些麻烦。例如,下面的方法似乎可以工作。
Map<String, String> items = Map.of(
"key-1", "value-1",
"key-2", "value-2",
"key-3", "value-3",
"key-4", "value-4",
"key-5", "value-5",
"key-6", "value-6",
"key-7", "value-7",
"key-8", "value-8",
"key-9", "value-9",
"key-10", "value-10");
但是,如果我们想在我们的地图上增加更多的键/值对呢?
问题是
在Map ,只要再增加一个键/值对就会导致编译错误。
Map<String, String> items = Map.of(
"key-1", "value-1",
"key-2", "value-2",
"key-3", "value-3",
"key-4", "value-4",
"key-5", "value-5",
"key-6", "value-6",
"key-7", "value-7",
"key-8", "value-8",
"key-9", "value-9",
"key-10", "value-10",
"key-11", "value-11");
你会得到一个隐秘的错误,大意是:。
no suitable method found for of(String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String)
解决办法
对于较大的Maps,你可以使用Map.ofEntries 方法,而不是Map.of 。你还需要在Map.entry 中指定每个键/值对。这里有一个上述11对Map 的例子,可以实际编译。
Map<String, String> items = Map.ofEntries(
Map.entry("key-1", "value-1"),
Map.entry("key-2", "value-2"),
Map.entry("key-3", "value-3"),
Map.entry("key-4", "value-4"),
Map.entry("key-5", "value-5"),
Map.entry("key-6", "value-6"),
Map.entry("key-7", "value-7"),
Map.entry("key-8", "value-8"),
Map.entry("key-9", "value-9"),
Map.entry("key-10", "value-10"),
Map.entry("key-11", "value-11"));
就这样,我们的代码编译成功了,我们可以继续向我们的地图添加键/值对了