Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么检查哈希集是否已添加为布尔值会返回false_Java_Arrays_Data Structures_Hashset - Fatal编程技术网

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)删除分号。真不敢相信我没有注意到,以为我疯了,谢谢