java - 哈希集大小问题

标签 java hashset

在下面的示例中,我创建了哈希集,我在其中添加了三个字符串值 s1,s2,s3 虽然它显示了哈希集 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());
}

输出:

s1 hashcode -:17523401
s2 hashcode -:8567361
s3 hashcode -:17523401
Set size is -:1

最佳答案

Set 不允许重复。当字符串被放入池中时,它们都指向同一个实例。

关于java - 哈希集大小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15473871/

相关文章:

java - 需要从启动屏幕重定向到网页

java - 取消委托(delegate)方法

java - 即使有足够的内存也会出现 OutOfMemoryError

java - 如何将键值集添加到 HashSet 或覆盖(如果已存在)

c# - 对于一个只能包含唯一项目但在 99% 的时间里包含 0 或 1 个项目的列表,开销是否使 List 比 HashSet 更好?

java - 无法计算出 HashSet 的输出?

Java VSync 没有全屏窗口

java - ConcurrentHashMap 内存管理还是替代方案?

c# - HashSet (.NET4) 不会忽略 c# 中的重复项

java - 将我的 HashSet 显示到 ListView