java map 中的key 如果是个类 如何等到这个类的键值呢?
时间: 2024-03-01 17:55:15 浏览: 82
详解JAVA里面获取map的key和value的方法
5星 · 资源好评率100%
如果你要将一个自定义的类作为Map的键,那么这个类必须满足两个条件:
1. 该类必须实现hashCode()和equals()方法,以便HashMap能够正确地将键映射到桶中,并且能够正确地比较键的值。
2. 该类的hashCode()方法的实现必须是稳定的,即对于相等的对象它的hashCode()方法的返回值必须相同。
下面是一个使用自定义类作为Map键的简单示例:
```java
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
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);
}
// getter and setter methods
}
Map<Person, String> map = new HashMap<>();
Person person1 = new Person("Alice", 20);
Person person2 = new Person("Bob", 30);
map.put(person1, "value1");
map.put(person2, "value2");
System.out.println(map.get(person1)); // "value1"
System.out.println(map.get(person2)); // "value2"
```
在这个示例中,我们定义了一个Person类作为Map的键,Person类实现了equals()和hashCode()方法,以便HashMap能够正确地将键映射到桶中,并且能够正确地比较键的值。然后我们创建了两个Person对象作为Map的键,分别将它们放入Map中,并且可以通过get()方法获取到它们对应的值。
阅读全文