Java 为什么检查哈希集是否已添加为布尔值会返回false
我希望我的问题措辞正确。。这里是一段代码,如果我取消注释行Java 为什么检查哈希集是否已添加为布尔值会返回false,java,arrays,data-structures,hashset,Java,Arrays,Data Structures,Hashset,我希望我的问题措辞正确。。这里是一段代码,如果我取消注释行System.out.println(hs.add(ar))console将打印true,那么为什么要在下面的if语句中访问呢 public static void duplicateExists(String [] array) { Set<String> hs = new HashSet<String>(); for (String ar : array) { // S
System.out.println(hs.add(ar))
console将打印true,那么为什么要在下面的if语句中访问呢
public static void duplicateExists(String [] array)
{
Set<String> hs = new HashSet<String>();
for (String ar : array)
{
// System.out.println(hs.add(ar));
if((hs.add(ar)) == false);
{
System.out.println("reaches here every time but shouldn't ");
}
}
}
public static void main(String[] args) {
duplicateExists(new String[] {"1","2","5","3","6","8"});
}
publicstaticvoidduplicateExists(字符串[]数组)
{
Set hs=新的HashSet();
for(字符串ar:array)
{
//系统输出打印项次(hs.add(ar));
如果((hs.add(ar))==false);
{
System.out.println(“每次都到达这里,但不应该”);
}
}
}
公共静态void main(字符串[]args){
存在重复项(新字符串[]{“1”、“2”、“5”、“3”、“6”、“8”});
}
此行:
if((hs.add(ar)) == false);
不执行任何操作,因为结尾的分号为。该元素实际上被添加到集合中,尽管从不满足if
的条件
然后,您有以下代码块:
{
System.out.println("reaches here every time but shouldn't ");
}
这很尴尬,但在Java中,可以使用大括号包围任意代码块。始终执行此命令,因为(由于分号)完全独立于前面的if
请尝试删除分号:
if ((hs.add(ar)) == false) {
System.out.println("reaches here every time but shouldn't");
}
格式化代码可能被视为不太重要的事情,但下面的一个案例清楚地表明,当代码格式不好时,可能会出现不直观、意外、难以调试的问题
此外,您可以简化代码:
if (!hs.add(ar)) {
System.out.println("reaches here every time but shouldn't");
}
现在它没有到达println
这一行:
if((hs.add(ar)) == false);
不执行任何操作,因为结尾的分号为。该元素实际上被添加到集合中,尽管从不满足if
的条件
然后,您有以下代码块:
{
System.out.println("reaches here every time but shouldn't ");
}
这很尴尬,但在Java中,可以使用大括号包围任意代码块。始终执行此命令,因为(由于分号)完全独立于前面的if
请尝试删除分号:
if ((hs.add(ar)) == false) {
System.out.println("reaches here every time but shouldn't");
}
格式化代码可能被视为不太重要的事情,但下面的一个案例清楚地表明,当代码格式不好时,可能会出现不直观、意外、难以调试的问题
此外,您可以简化代码:
if (!hs.add(ar)) {
System.out.println("reaches here every time but shouldn't");
}
现在,如果((hs.add(ar))==false),则它不会到达
println
删除分号。真不敢相信我没有注意到,我以为我疯了,谢谢if((hs.add(ar))==false)代码>删除分号。真不敢相信我没有注意到,以为我疯了,谢谢