为什么能把同一个对象重复插入HashSet?

tutu_cloud 2009-05-12 03:17:05
J2SE 1.6.0_13编译运行下面程序,获得了(至少我觉得)诡异的结果:2
为什么?明明只创建了一个HashSet<Integer>对象。。。请指教。。。多谢


import java.util.HashSet;
import java.util.Set;
public class Test
{
public static void main(String[] args)
{
Set<Set<Integer>> ss = new HashSet<Set<Integer>>();
Set<Integer> s = new HashSet<Integer>();
s.add( 1 );
ss.add( s );
s.add( 2 );
ss.add( s );
System.out.println( ss.size() );
}
}
...全文
185 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tutu_cloud 2009-05-12
  • 打赏
  • 举报
回复
后来自己也想明白了。。。集合对象内部结构的维护倚赖各元素的Key值,更改集合的Key值将导致集合内部结构被破坏。。。很基础的东西。。。
zhengmj777 2009-05-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wenzhong0751 的回复:]
s 有一个元素和有两个元素时的 hash值不一样,所以 ss 会被添加两个元素
[/Quote]

正解!
wenzhong0751 2009-05-12
  • 打赏
  • 举报
回复
s 有一个元素和有两个元素时的 hash值不一样,所以 ss 会被添加两个元素

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧