相关疑难解决方法(0)

在Java 9中重载的方便工厂方法的重点是什么?

Java 9附带了用于创建不可变列表的便捷工厂方法.最后,列表创建非常简单:

List<String> list = List.of("foo", "bar");
Run Code Online (Sandbox Code Playgroud)

但是这个方法有12个重载版本,11个有0到10个元素,另一个有var args.

static <E> List<E>  of(E... elements)
Run Code Online (Sandbox Code Playgroud)

同样是与案件Set和Map.

由于存在var args方法,有多少11种方法有什么意义呢?

我认为var-args创建一个数组,所以其他11个方法可以跳过创建一个额外的对象,在大多数情况下会有0-10个元素.还有其他原因吗?

java collections variadic-functions java-9

25
推荐指数
3
解决办法
1801
查看次数

为什么在创建Map时会出现IllegalArgumentException?

我正在尝试创建一个城市和温度的地图,但它正在抛出一个IllegalArgumentException.这是我正在做的事情:

Map<String, Integer> tempMap = Map.of("London", 13, "Paris", 17, "Amsterdam", 13, 
                                      "Madrid", 21, "Rome", 19, "London", 13, "Bonn", 14,
                                      "Moscow", 7, "Barcelona", 20, "Berlin", 15);
Run Code Online (Sandbox Code Playgroud)

如果我逐个添加它们就没问题了:

Map<String, Integer> tempMap = new Hashmap<>(); // or LinkedHashMap
tempMap.put("London", 13);
tempMap.put("Madrid", 21);
tempMap.put("Moscow", 7);
// etc.
Run Code Online (Sandbox Code Playgroud)

为什么会这样?内容应该是不一样的吗?

java collections java-9

7
推荐指数
1
解决办法
662
查看次数

标签 统计

collections ×2

java ×2

java-9 ×2

variadic-functions ×1