欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Map中自定义Key

程序员文章站 2022-03-11 08:37:27
在使用Map集合的时候可以发现对于Key和Value的类型实际上都可以由使用者定义,这就意味着可以用自定义的类来进行Key类型的设置。对自定义Key类型所在的类中,一定要覆写hashCode()和equals()方法。 package com.iterator.demo; import java.u... ......

 

在使用map集合的时候可以发现对于key和value的类型实际上都可以由使用者定义,这就意味着可以用自定义的类来进行key类型的设置。
对自定义key类型所在的类中,一定要覆写hashcode()和equals()方法。

 

package com.iterator.demo;

import java.util.hashmap;
import java.util.map;

class person{
    private string name;
    private int age;
    public person(string name, int age) {
        this.name = name;
        this.age = age;
    }
    @override
    public int hashcode() {//覆写hashcode()
        final int prime = 31;
        int result = 1;
        result = prime * result + age;
        result = prime * result + ((name == null) ? 0 : name.hashcode());
        return result;
    }
    @override
    public boolean equals(object obj) {//覆写equals()
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getclass() != obj.getclass())
            return false;
        person other = (person) obj;
        if (age != other.age)
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        return true;
    }
}

public class iteratordemo {
    public static void main(string[] args) {
        map<person, string> map = new hashmap<person, string>();//使用自定义类作为key
        map.put(new person("张三",18), "张三疯");
        map.put(new person("李四",18), "李四光");
        map.put(new person("王五",18), "王五哥");
        system.out.println(map.get(new person("张三", 18)));//通过key找到value
    }
}