但是不同的对象,hashcode也可能会相同。
这时就发生了冲突,需要再次比较发生冲突的两个或多个元素是否相同(通过equals方法)。
如果相同添加失败,如果不同添加成功。
为什么不直接用equals比较是否相同?
因为不知道该跟哪个元素比较啊,难不成遍历整个Set来比较?
如果有一万个元素呢,那么将会很费时间。
而先算出hashcode在比较有个好处。
只要hashcode不同,则可以确定元素不同。只有hashcode相同的情况下,元素才有可能相同。
hashcode的性质:
如果两个元素相同,那么其hashcode必定相同。
如果两个元素不同,那么不要求其hashcode一定不同。(但是如果不同的元素尽量能返回不同的hashcode,那么将有助于提高HashSet的性能)
java中往集合添加数据调用add();方法就行
//第一步先创建一个set集合的子类
HashSet has=new HashSet<>()
//给set集合添加的方法是add()
has.add(args)
资料拓展:Collection接口可以存放重复元素,也可以存放不重复元素。List可以存放重复元素,Set就是不重复的元素。
通过元素的equals方法,来判断是否为重复元素。
Set集合取出元素的方式可以采用:迭代器,增强 for
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)