哈希集大小问题

Mah*_*nde 5 java hashset

这里在下面的例子中我创建了hashset,其中我添加了三个字符串值s1,s2,s3虽然它显示了我的hashset 1的大小.为什么?

public static void main(String args[])
{
    String s1="abc";
    String s2=new String("abc");
    String s3="abc";
    Set setdemo=new HashSet();
    setdemo.add(s1);
    setdemo.add(s2);
    setdemo.add(s3);

    System.out.println("s1 hashcode -:"+ System.identityHashCode(s1));
    System.out.println("s2 hashcode -:"+ System.identityHashCode(s2));
    System.out.println("s3 hashcode -:"+ System.identityHashCode(s3));
    System.out.println("Set size is -:"+setdemo.size());
}
Run Code Online (Sandbox Code Playgroud)

输出:

s1 hashcode -:17523401
s2 hashcode -:8567361
s3 hashcode -:17523401
Set size is -:1
Run Code Online (Sandbox Code Playgroud)

Sud*_*kar 5

设置不允许重复。将字符串放入池中时,它们都指向同一实例。

  • 它们并不都指向同一实例,因为String s2没有放入字符串池。 (2认同)