为什么 Set.of() 如果元素是重复的,则抛出一个 IllegalArgumentException?
在Java 9中,在Set接口上引入了新的静态工厂方法,称为of(),它接受多个元素,甚至是一个元素数组。
我想将列表转换为一个集合,以删除集合中的任何重复条目,这可以(在Java 9之前)使用以下命令完成:
Set<String> set = new HashSet<>();
set.addAll(list);
但我认为使用这个新的Java 9静态工厂方法会很酷:
Set.of(list.toArray())
其中 是先前定义的字符串列表。list
但是,唉,当元素是重复的时,java抛出了一个,在方法的Javadoc中也有说明。这是为什么呢?IllegalArgumentException
编辑:这个问题不是另一个关于概念上等效的主题Map.of()方法的问题的副本,而是明显不同的。并非所有静态工厂 of() 方法的行为都相同。换句话说,当我询问有关Set.of()方法的问题时,我不会点击涉及Map.of()方法的问题。