Java 类集框架 : Map 中的 key实现说明

关于 Map 中 key 的说明

在使用 Map 集合的时候之前使用的都是系统类作为了 KEY(Integer), 那么实际上用户也可以采用自己的类作为 Key.

那么这个时候一定要记得覆写 Object 中的 hashCode() 与 equals() 方法

package com.beyond.nothing;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

class Person {
    
    
    private String name;

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

    @Override
    public String toString() {
    
    
        return "姓名: " + this.name;
    }

    @Override
    public boolean equals(Object o) {
    
    
        if (this == o) return true;
        if (!(o instanceof Person)) return false;
        Person person = (Person) o;
        return name.equals(person.name);
    }

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

public class test {
    
    
    public static void main(String[] args) {
    
    
        Map< Person, String> map = new HashMap<>();
        map.put(new Person("张三"), new String("zs"));
        System.out.println(map.get(new Person("张三")));
    }
}

因为从实际开发来讲, 对于Map 集合的中的key的类型不是String,就是 Integer, 这些系统类都已经覆写好了 hashCode() 和 equals() 两个方法了.

猜你喜欢

转载自blog.csdn.net/Beyond_Nothing/article/details/113338361