情况一:
value是自定义类型,不需要重写hashCode和equals方法
情况二:
key是自定义类型,必须重写hashCode和equals方法
主体文件
package xuexi.heima.map;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class demo04HashMap {
public static void main(String[] args) {
show01();
System.out.println("============");
show02();
}
private static void show02() {
HashMap map2 = new HashMap<>();
map2.put(new PersonHash("张三",18),"北京");
map2.put(new PersonHash("李四",18),"南京");
map2.put(new PersonHash("王五",18),"上海");
map2.put(new PersonHash("赵六",18),"重庆");
map2.put(new PersonHash("张三",18),"北京");
Set> s1 = map2.entrySet();
for (Map.Entry s2 : s1) {
String v1 = s2.getValue();
PersonHash key = s2.getKey();
System.out.println(key+"---"+v1);
}
}
private static void show01() {
HashMap map1 = new HashMap<>();
map1.put("北京",new Person("张三",18));
map1.put("南京",new Person("李四",20));
map1.put("上海",new Person("王五",20));
map1.put("重庆",new Person("张三",18));
map1.put("北京",new Person("赵六",19));
Set s = map1.keySet();
for (String s1 : s) {
Person person = map1.get(s1);
System.out.println(s1+"-"+person);
}
}
}
无重写person
package xuexi.heima.map;
public class Person {
private String name;
private Integer age;
public Person() {
}
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
有重写person
package xuexi.heima.map;
import java.util.Objects;
public class PersonHash {
private String name;
private Integer age;
public PersonHash() {
}
public PersonHash(String name, Integer age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "PersonHash{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
PersonHash that = (PersonHash) o;
return Objects.equals(name, that.name) &&
Objects.equals(age, that.age);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
分享到: