HashSeT使用3
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;
// }