我向Set
添加了两次相同的整数,但是尽管Set
不允许重复,但它不会给出任何错误。这是为什么?
Set<Integer> set = new HashSet<Integer>();
set.add(1);
set.add(1);
答案 0 :(得分:6)
Set:add
中已有的值时, Set
不应该给您一个错误。它只会返回false
而不会将值添加到Set
。
检查JavaDoc:
布尔加法(E e)
如果指定的元素尚不存在,则将其添加到此集合中(可选操作)。更正式地,如果集合不包含元素e2,则将指定的元素e添加到该集合中(e == null?e2 == null:e.equals(e2))。如果此set已包含该元素,则调用将保持set不变并返回false。结合对构造函数的限制,这可以确保集合永远不会包含重复元素。
答案 1 :(得分:1)
Set.add返回一个布尔值。如果项目已在集合中,则返回值为false。
所以如果你有选择的话。要么...
if (!set.add(i)) {
// item already in set; not added
}
......或
if (set.contains(i)) {
// item already in set
}
答案 2 :(得分:1)
查看官方JAVA文档,了解有关添加方法的更多信息:https://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html#add%28E%29
如果Set已经包含元素,它将返回false。