HashSeT使用3

HashSeT使用2

package com.tiedandan.集合.泛型.set子接口.hashset存储分析;

import com.tiedandan.集合.泛型.set子接口.Person;

import java.util.HashSet;

/**
* 哈希列表存储结构(数组+列表+红黑树(jdk1.8更新))
* 根据hashcode计算出在数组上保存随机的位置,如果随机的位置上已经有元素。
* 则用equals方法判断,如果为true,则证明重复,否则将添加到列表。
* 如果发生重复,可以重写hashcode并且重写equals方法排重。
*/
public class HashSetuse {
   public static void main(String[] args) {
       HashSet<Person> hashSet1 =new HashSet<>();
       Person p2 = new Person("张铁蛋",555);
       Person p3 = new Person("张铁蛋",444);
       Person p4 = new Person("张铁蛋",333);

       hashSet1.add(p2);
       hashSet1.add(p3);
       hashSet1.add(p4);
       hashSet1.add(new Person("张铁蛋",444));

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


  }


}
package com.tiedandan.集合.泛型.set子接口.hashset存储分析;

import java.util.Objects;

public class Person {
   private  String name;
   private  int age;

   public Person() {
  }

   public Person(String name, int age) {
       this.name = name;
       this.age = age;
  }

   public String getName() {
       return name;
  }

   public void setName(String name) {
       this.name = name;
  }

   public int getAge() {
       return age;
  }

   public void setAge(int age) {
       this.age = age;
  }

//   @Override
//   public int hashCode() {
//       int n1= this.name.hashCode();
//       int n2 =this.age;
//       return n1 +n2;
//   }
//
//   @Override
//   public boolean equals(Object obj) {
//
//       if (this==obj){
//           return true;
//       }
//       if (obj==null){
//           return false;
//       }
//       if (obj instanceof Person){
//           Person p =(Person) obj;
//           if (this.name.equals(p.getName()) && this.age== p.getAge()){
//               return true;
//           }
//       }
//       return false;
//   }

   @Override
   public boolean equals(Object o) {
       if (this == o) return true;
       if (o == null || getClass() != o.getClass()) return false;
       Person person = (Person) o;
       return age == person.age && Objects.equals(name, person.name);
  }

   @Override
   public int hashCode() {
       return Objects.hash(name, age);
  }

   @Override
   public String toString() {
       return "Person{" +
               "name='" + name + '\'' +
               ", age=" + age +
               '}';
  }
}

 

posted on 2021-11-20 11:05  张铁蛋666  阅读(48)  评论(0)    收藏  举报

导航