Java Interview About HashSet

How does indexing in HashSet work?

package HashSetInterview;

import java.util.Objects;

/**
 * @Author:CT
 * @Date:2021/2/8
 * @Description:HashSetInterview
 * @Version 1.0
 */
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 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 +
                '}';
    }
}

package HashSetInterview;

import org.junit.Test;

import java.util.HashSet;

/**
 * @Author:CT
 * @Date:2021/2/8
 * @Description:HashSetInterview
 * @Version 1.0
 */
/*
关于HashSet的经典面试题
 */
public class HashSetInterview {
    
    
    @Test
    public void test()
    {
    
    
        HashSet hashSet=new HashSet();
        Person person=new Person("AA",12);
        Person person1=new Person("BB",15);
        hashSet.add(person);
        hashSet.add(person1);

        person.setName("CC");
        System.out.println(hashSet);//[Person{name='BB', age=15}, Person{name='CC', age=12}]
        hashSet.remove(person);//此时remove操作会失败 因为首先会按照哈希值去寻找 “CC” 然而并没有找到 所以没有删除
        System.out.println(hashSet);//[Person{name='BB', age=15}, Person{name='CC', age=12}]

        hashSet.add(new Person("AA",12));
        System.out.println(hashSet);//[Person{name='BB', age=15}, Person{name='CC', age=12}, Person{name='AA', age=12}]

        hashSet.add(new Person("AA",12));//添加失败 会比较equals()方法
        System.out.println(hashSet);//Person{name='BB', age=15}, Person{name='CC', age=12}, Person{name='AA', age=12}]
    }
}

Guess you like

Origin blog.csdn.net/weixin_46351306/article/details/113750154