我是java的新手,我知道set不允许重复值,但我不知道为什么set不允许重复值,实际上我做的实际上,
声明了一个set并添加了重复值,但没有发生任何错误,没有编译时错误,没有运行时.为什么?
use*_*767 15
内部SET存储元素使用HASHTABLE ... HASHTABLE是键值对的结构.这是SET传递的值被视为内部的HASHTABLE键.密钥是唯一不能重复的.这就是为什么你传递任何重复值它返回false并且没有添加到SET ...
如果add元素返回true,它将被添加到SET ...否则返回False,这就是为什么它不会给出任何编译或运行时错误而且它不会被添加到SET
das*_*ght 14
"集合不允许重复值"的含义是,当您向集合添加副本时,将忽略副本,并且集合保持不变.这不会导致编译或运行时错误:会以静默方式忽略重复项.
您可以通过检查结果来判断值是否重复add,如下所示:
Set<String> testSet = new HashSet<String>();
boolean first = testSet.add("hello");
System.out.println(first); // Prints "true"
boolean second = testSet.add("hello");
System.out.println(second); // Prints "false"
Run Code Online (Sandbox Code Playgroud)
根据定义,不允许Set存储重复的值.如果需要重复值,请使用List.根据接口文档中的指定,当您尝试添加重复值时,该方法add返回false,而不是Exception.
http://docs.oracle.com/javase/7/docs/api/java/util/Set.html