哈希集计数比较 Java

HashSet Count Comparison Java

我想要实现的是计算输入中具有相同值的字符串的数量。

Scanner reader = new Scanner(System.in);

Set group1 = new HashSet();
Set group2 = new HashSet();
Set self = new HashSet();

for (int i = 1; i <= 3; i++) {
    System.out.print("Enter birt month " + i + ": ");
    group1.add(reader.next());
}

for (int i = 1; i <= 3; i++) {
    System.out.print("Enter birt month " + i + ": ");
    group2.add(reader.next());
}
System.out.print("Enter your birth month: ");
self.add(reader.next());

if (group1.contains(self) || group2.contains(self)) {
    count++;
}
System.out.println("You have the same birth month with " + count + " of your classmate.");

但是我没有得到我应该有的值,我得到的是即使 group1group2HashSet 具有相同的值名为 self 的计数器没有上升,它保持为 0,我不知道为什么。任何提示或请帮助我如何做到这一点。我还尝试将 if 语句反之亦然 self.contains(group1) || self.contains(group2); 以确定自身是否具有相同的 group1 或 group2

已解决!!

我只需要使用 containsAll 如果 group1group2 在名为 self

的集合中,它将读取集合

所以,你的问题是这样的。

group1.contains(self) 检查对象 self 是否存在于 group1 中,这里不是这种情况。

在这里,您想将它与集合 self 进行比较。

group1.contains(self) 更改为 group1.containsAll(self)

此外,我发现的另一个问题是,您的递增计数变量仅一次。我的建议是,如果条件如下,请使用 2,

    int count = 0;
    if (group1.containsAll(self)) {
        count++;
    }

    if (group2.containsAll(self)) {
        count++;
    }

如果两个 Set 都具有“self

,则上述条件会得到注意