关于 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() 两个方法了.