java map的key 使用多个顺序值的hash
时间: 2024-03-03 18:47:53 浏览: 111
如果 `Map` 的键需要使用多个顺序值进行哈希,则可以考虑使用自定义的类作为键,并重写该类的 `hashCode()` 和 `equals()` 方法。
具体来说,我们可以定义一个包含多个顺序值的类 `MyKey`,并在其中实现 `hashCode()` 和 `equals()` 方法。以下是一个简单示例:
```java
import java.util.Objects;
public class MyKey {
private int value1;
private int value2;
private int value3;
public MyKey(int value1, int value2, int value3) {
this.value1 = value1;
this.value2 = value2;
this.value3 = value3;
}
@Override
public int hashCode() {
// 使用多个顺序值进行哈希
return Objects.hash(value1, value2, value3);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
MyKey myKey = (MyKey) obj;
// 判断多个顺序值是否相等
return value1 == myKey.value1 &&
value2 == myKey.value2 &&
value3 == myKey.value3;
}
}
```
然后我们可以将 `MyKey` 对象作为 `Map` 的键进行操作。以下是一个简单示例:
```java
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<MyKey, String> map = new HashMap<>();
MyKey key1 = new MyKey(1, 2, 3);
MyKey key2 = new MyKey(4, 5, 6);
map.put(key1, "value1");
map.put(key2, "value2");
System.out.println(map.get(key1)); // 输出 "value1"
System.out.println(map.get(key2)); // 输出 "value2"
}
}
```
输出结果为:
```
value1
value2
```
这样就可以使用多个顺序值进行哈希,并将自定义的类作为 `Map` 的键进行操作。
阅读全文