美文网首页
关于this关键字以及hasnSet中保证对象唯一性的原理

关于this关键字以及hasnSet中保证对象唯一性的原理

作者: 江南Ryan | 来源:发表于2018-11-14 21:26 被阅读0次

package testForFun.demo20181109;

import java.util.HashMap;

import java.util.HashSet;

/**

* Created with IntelliJ IDEA

* User:liu

* Date:2018/11/9

* Time:14:27

*/

public class Person {

    private Stringname;

    private  Integerage;

    public Integer getAge() {

    return age;

}

public void setAge(Integer age) {

    this.age = age;

}

/**

    * @return a hash code value for this object.

    * @see Object#equals(Object)

    * @see System#identityHashCode

*/

    @Override

    public int hashCode() {

      return this.name.hashCode()+age*50;

}

/**

    * @param obj the reference object with which to compare.

    * @return {@code true} if this object is the same as the obj

    * argument; {@code false} otherwise.

    * @see #hashCode()

    * @see HashMap

*/

  @Override
   public boolean equals(Object obj) {

    if(!(objinstanceof Person)){

        return false;

    }

    System.out.println("执行的equal方法");

    Person obju = (Person) obj;

    return ( obju.name==this.name&&obju.age==this.age)?true:false;

  }

  @Override

    public String toString() {

    return "Person{" +

    "name='" +name +'\'' +

    ", age=" +age +

    '}';

}

public static void main(String[] args){

    Person a =new Person("张三",18);

    Person b =new Person("张三",18);

    a.setAge(18);

    a.setName("李四");

    HashSet set =new HashSet<>();

    set.add(a);

    set.add(b);

//只有同时重写hashCode和equal方法才能保证自定义的对象在HashSet的唯一性。

    System.out.println("set集合的大小:"+set.size());

    System.out.println("a的hashCode: "+a.hashCode()+", a的内容: "+a.toString());

    System.out.println("b的hasnCode:"+b.hashCode()+", b的内: "+b.toString());

//-------------------------------------------------------------------//

      Person person =new Person();

      System.out.println(person.toString());

      Person methodtest = person.methodTestThis();

      System.out.println(methodtest);

}

public Person() {

//1,this 在此处表示类的实例,在构造方法中使this关键字表示调用类中的构造方法,this只能在构造方法的第一行。

        this("HELLO",28);

}

public Person(String name, Integer age) {

    this.name = name;

    this.age = age;

}

public String getName() {

    return name;

}

public void setName(String name) {

//2,this 将局部变量的值传递给成员变量

        this.name = name;

}

public Person methodTestThis(){

//3,this 关键字返回这个类。还有一个重大的作用就是返回类的引用

      return this;

}

}

相关文章

  • 关于this关键字以及hasnSet中保证对象唯一性的原理

  • HashSet

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

  • Map集合中对象作为键值

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

  • Day5-单例

    关于单例 目的: 保证对象的唯一性 核心: 构造方法私有(这一点和 Fragment 要求的构造方法需 publi...

  • 单例设计模式

    解决的问题:可以保证一个类在内存中的对象唯一性,即单一实例。当必须对多个程序使用同一配置信息时,需要保证该对象的唯...

  • 并发与高并发课程学习笔记(3)

    单例模式是设计模式中常用的一种模式 在多线程中,单例模式需要保证发布对象的唯一性,因此有三种方案来保证安全发布对象...

  • 单利模式

    1.单利设计模式解决的问题: 保证一个类在内存中的对象唯一性。比如多个程序使用同一个配置信息对象时,就需要保证该对...

  • java单例设计模式

    单例设计模式就是要保证单个类的对象在内存中的唯一性。外部不能new单例设计的 类对象,所以必须私有其构造方法。 保...

  • 02.HashSet存储自定义对象并遍历

    HashSet存储自定义对象并遍历 HashSet唯一性原理 规则:新添加到HashSet集合的元素都会与集合中已...

  • java——设计模式

    1,单例设计模式。解决的问题:就是可以保证一个类在内存中的对象唯一性。 必须对于多个程序使用同一个配置信息对象时,...

网友评论

      本文标题:关于this关键字以及hasnSet中保证对象唯一性的原理

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