相关疑难解决方法(0)

有效Java hashCode()实现中的位移

我想知道是否有人可以详细解释什么

(int)(l ^ (l >>> 32));

在下面的hashcode实现中(由eclipse生成,但与Effective Java相同):

private int i;
private char c; 
private boolean b;
private short s;
private long l;
private double d;
private float f;

@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + i;
    result = prime * result + s;
    result = prime * result + (b ? 1231 : 1237);
    result = prime * result + c;
    long t = Double.doubleToLongBits(d);
    result …
Run Code Online (Sandbox Code Playgroud)

java hashcode

20
推荐指数
2
解决办法
8775
查看次数

java Object中hashCode的实现是什么?

可能重复:
hashCode()是如何用Java计算的

我发现Java中hashCode(?的根类方法没有实现Object:

public native int hashCode(); 
Run Code Online (Sandbox Code Playgroud)

如果我有一个Object a和一个Object b,我如何知道a.hashCode()b.hashCode()价值而不使用System.out.println()?只是通过hashCode实施.

我尝试了new两个ArrayList对象,令我惊讶的是,hashCode()值是相同的:它们都是1.

java hashcode java-7

13
推荐指数
2
解决办法
2万
查看次数

从HashSet中删除元素

首先在HashSet中添加元素并打印HashSet的大小,该大小按预期返回.但我修改了一个对象值并再次存储到HashSet并使用对象名称删除对象.但我仍然和以前一样大小.我的代码如下:

public class Test {

    private String s;
    public Test(String s){
        this.s  = s ;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        HashSet<Object> hs = new HashSet<Object>();
        Test t1 = new Test("Keval");
        Test t2 = new Test("Keval");

        String s1 = new String("Keval");        

        hs.add(t1);
        hs.add(t2);
        hs.add(s1);     
        System.out.println("Set Size :: " + hs.size());

        s1 = new String("Demo");        
        hs.remove(s1);
        System.out.println("Set Size :: " + hs.size());


    }
}
Run Code Online (Sandbox Code Playgroud)

上述代码的输出是:

Set Size :: 3
Set Size :: 3    // Why …
Run Code Online (Sandbox Code Playgroud)

java string hashset

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

标签 统计

java ×3

hashcode ×2

hashset ×1

java-7 ×1

string ×1