小编Mat*_*ale的帖子

Hashset的Hashcode和Equals

请澄清我对Hashset的疑问.考虑以下代码,

class Person
{
    String name;

    Person(String n)
    {
        name=n; 
    }
    public String getName()
    {
        return name;   
    }

    @Override
    public boolean equals(Object arg0) {

        System.out.println("in equals");

        Person obj=(Person)arg0;

        System.out.println("1st "+getName());
        System.out.println("2nd "+obj.getName());

        if(this.getName().equals(obj.getName()))
        {
                return true;
        }
        return false;
    }


    @Override
    public int hashCode() {

        System.out.println("in hash code");
        System.out.println(" value is "+Integer.valueOf(name.charAt(0)));
        return Integer.valueOf(name.charAt(0));
    }
}
Run Code Online (Sandbox Code Playgroud)

在主要我有以下代码

Person obj1=new Person("bcd");

Person obj2=new Person("cde");

Person obj3=new Person("abc");

Person obj4=new Person("abc");
Run Code Online (Sandbox Code Playgroud)

现在,如果我将这些对象添加到hashset

Set<Person> sset=new HashSet<Person>();

sset.add(obj1);
sset.add(obj4);
sset.add(obj2);
sset.add(obj3);
Run Code Online (Sandbox Code Playgroud)

我得到了这个输出

in hash …
Run Code Online (Sandbox Code Playgroud)

java equals hashcode hashset

46
推荐指数
3
解决办法
9万
查看次数

assertNotEquals静态导入导致编译错误

我有一个Foo.java编译没有错误的文件。但是当我添加单行时

import static org.junit.Assert.assertNotEquals;
Run Code Online (Sandbox Code Playgroud)

这会导致我的蚂蚁生成以下错误:

compileTests:
[javac] Compiling 27 source files to C:\example\bin
[javac] C:\example\src\Foo.java:7: error: cannot find symbol
[javac] import static org.junit.Assert.assertNotEquals;
[javac] ^
[javac]   symbol:   static assertNotEquals
[javac]   location: class
[javac] 1 error
Run Code Online (Sandbox Code Playgroud)

我正在使用JUnit 4.4。junit-4.4.jar包括在classpathjavac任务。

我曾尝试运行不同版本的编译器与标志-Dbuild.compiler=javac1.7-Dbuild.compiler=javac1.8,但它没有什么区别。我仍然收到完全相同的错误。

assertNotEquals 是从Assert唯一导致此错误的静态导入。

我已经看到过此文章Java静态导入导致编译错误。可能是编译器错误? 而且我尝试Assert自行导入,并在每个assert语句之前加上Assert.建议的这篇文章。我遇到了同样的错误,这次是在方法调用Assert.assertNotEquals()而不是import语句上。

但是,导入成功编译并在Eclipse上运行。

有人对此有任何想法吗?我想深入了解这一点,而不必实施变通办法。

java eclipse ant junit

4
推荐指数
1
解决办法
2681
查看次数

标签 统计

java ×2

ant ×1

eclipse ×1

equals ×1

hashcode ×1

hashset ×1

junit ×1