java - 简化哈希集重复检测器的代码

标签 java duplicates hashset

这是我的代码,用于检查将电影读取到哈希集中并检测电影是否包含重复项。

public static void main(String args[]) throws Exception
{
    boolean hasDuplicate = false;
    Set<String> set = new HashSet<String>();        
    BufferedReader list = new BufferedReader( new FileReader(args[0]));     
    while(list.ready() && (hasDuplicate == false)){                         
        set.add(list.readLine());   
        if(set.contains(list.readLine())) hasDuplicate = true;                          
    }
    if(hasDuplicate == true){ 
        System.out.println("NOT UNIQUE");
    }else{ 
        System.out.println("UNIQUE");
    }
    list.close();           
}   

有没有办法让我简化

while(list.ready() && (hasDuplicate == false)){                         
        set.add(list.readLine());   
        if(set.contains(list.readLine())) hasDuplicate = true;                          
    }

这样我只需要调用一次哈希集?

最佳答案

如果该项目尚未在 Set 中,则 add 方法将返回 true。所以你可以简单地调用并检查结果:

while(list.ready() && (hasDuplicate == false)){                         
    if (!set.add(list.readLine()))
         hasDuplicate = true;                          
  }

其次,原始代码无论如何都无法工作,因为该行被读取了两次,并且仅使用一次用于添加,一次用于检查。换句话说,它忽略了一半的输入。

关于java - 简化哈希集重复检测器的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39908354/

相关文章:

java - 调整图像大小以适应 jLabel 问题

java - 使用 Java 解析文本文件

php - 更新列值或删除重复的列值?

Java: "myString[hey, there]"到 HashSet?

c# - C# HashSet 是否通过 Equals 然后通过 GetHashCode 检查重复项?

java - HashSet add(Object o) 错误

java - 此环境中未提供编译器。 - Eclipse - Maven - java-8-openjdk - Xubuntu

java - Eclipse JDK 7启动失败

mysql - 如何从 MySQL 表中删除重复的行

mysql - 在 MySQL 中,我可以复制一行插入到同一个表中吗?