相关疑难解决方法(0)

你什么时候使用Java的@Override注释?为什么?

使用Java @Override注释的最佳实践是什么?为什么?

使用@Override注释标记每个重写方法似乎有点过分.是否有某些编程情况需要使用@Override和其他不应该使用的@Override

java annotations

498
推荐指数
17
解决办法
88万
查看次数

哈希集的奇怪行为

我在弄乱试图理解HashSet的行为时遇到了麻烦,但遇到了一个我无法理解的问题。第二个和第三个狗对象具有相同的名称,equals()并且hashcode()已被覆盖以使名称表示相等。尽管如此,hashSet仍然有重复项,我不知道为什么。

我重新阅读了Head First Java的“数据结构”一章,但是它仍然建议我的代码在理论上应该可以工作。

public class DataStructsTests<E> {

HashSet<Dogs> tree = new HashSet<Dogs>();
HashSet<Dogs> treeOwner = new HashSet<Dogs>();

public static void main(String[] args) {
    DataStructsTests<String> d = new DataStructsTests<String>();
    d.go();
}

public void go() {
    Dogs dog = new Dogs("Scout", "a");
    tree.add(dog);
    treeOwner.add(dog);

    Dogs dog2 = new Dogs("Brodie", "b");
    tree.add(dog2);
    treeOwner.add(dog2);

    Dogs dog3 = new Dogs("Brodie", "c");
    tree.add(dog3);
    treeOwner.add(dog3);

    System.out.println(tree);
    System.out.println(treeOwner);

    System.out.println(dog2.equals(dog3));
    System.out.println(dog2.hashCode() + " " + dog3.hashCode());
}

class Dogs {
    private String name;
    private …
Run Code Online (Sandbox Code Playgroud)

java equals hashcode hashset

2
推荐指数
1
解决办法
62
查看次数

标签 统计

java ×2

annotations ×1

equals ×1

hashcode ×1

hashset ×1