美文网首页
对象的唯一性

对象的唯一性

作者: 魂之挽歌w | 来源:发表于2017-12-12 10:35 被阅读7次

通过重写类的equals和hashcode方法才能确定一个对象,只写equals不行

在hashset中不允许出现重复对象,元素的位置也是不确定的。在hashset中又是怎样判定元素是否重复的呢?判断两个对象是否相等的规则是:

.1),判断两个对象的hashCode是否相等

如果不相等,认为两个对象也不相等,完毕,如果相等,转入2

.2),判断两个对象用equals运算是否相等

如果不相等,认为两个对象也不相等

如果相等,认为两个对象相等(equals()是判断两个对象是否相等的关键)

注意:equals为true则hashCode一定相等

         hashCode相等但equals()不一定为true

一般来说,只有类的实例对象要被采用哈希算法进行存储和检索时,这个类才需要按要求覆盖hashCode方法,即使程序可能暂时不会用到当前类的hashCode方法,但是为它提供一个hashCode方法也不会有什么不好,没准以后什么时候又用到这个方法了,所以,通常要求hashCode方法和equals方法一并被同时覆盖。

HashSet不允许添加相同的对象,评判的标准是hash值,如果不重写hashCode方法,那么boy1和boy3就被其认定为不同的对象,因为每new一个对象默认hash值肯定是不同的,注意:同一个hash值可以有不同的对象。

class Boy{

     String name;

    int    age;

public Boy(String name,int age){

this.name=name;

this.age=age;}

@override

public boolean   equals(Object obj){

    Boy boy=(Boy)obj;

    return   this.age==boy.age&&this.name.equals(boy.name);

}

@override

public  String toString(){

return  name+age;

}

}

class   Test{

public void main(String[] args){

Boy boy1=new Boy(xm,10);

Boy boy2=new Boy(xl,20);

Boy boy3=new Boy(xm,10);

HashSet  set=new  HashSet();

set.add(boy1);

set.add(boy2);

set.add(boy3);

Iterator iterator=set.iterator();

while(iterator.hasNext){

System.out.println(iterator.hasNext);}

}

相关文章

  • 单例模式(singleton)

    转载 确保对象的唯一性——单例模式 (一)确保对象的唯一性——单例模式 (二)确保对象的唯一性——单例模式 (三)...

  • HashSet

    集合框架(HashSet存储自定义对象保证元素唯一性) ** A:案例演示 存储自定义对象,并保证元素唯一性。 重...

  • 对象的唯一性

    通过重写类的equals和hashcode方法才能确定一个对象,只写equals不行 在hashset中不允许出现...

  • 对象数组优雅去重

    1、使用Map 2、使用对象key唯一性

  • Map集合中对象作为键值

    对象作为键值如果要保证同一个对象的唯一性,要用hashcode作为键值对象,即在对象类中重写hashcode方法

  • 领域驱动设计-实体和值对象

    Overview 实体和值对象是领域模型的基础单元。 实体 实体是由属性构成,其有唯一性,即拥有唯一性的属性,比如...

  • 两种实用的数组去重方法

    1.利用对象键唯一性去重 2.es6 Set去重

  • Android面试记录#1:Android中单例模式的作用范围

    面试中被问到了老生常谈的单例模式,之前看得比较浅,只觉得单例模式保证对象的全局唯一性,那么这个“全局唯一性”针对一...

  • leetcode-day14-独一无二的出现次数[1207]

    思路:利用对象的key值具有唯一性,先计算出每个元素出现的个数为对象1,再利用对象1中的键值组成新的对象2,比较两...

  • js数组去重

    1.利用对象的属性唯一性去重 2.利用es6的Set

网友评论

      本文标题:对象的唯一性

      本文链接:https://www.haomeiwen.com/subject/aqugixtx.html