[英]How do I setup a map for a unique identifier?
我們有一個數據庫表,該表上的唯一索引是一個復合鍵(String,int,int)。 我想在我的Java類中添加一個包含該鍵的字段。 我試過了:
Map<String, Integer, Integer>
但是IDE告訴我我不能這樣做,因為地圖只是Map K,V。
我的問題是代表此密鑰的最佳方法是什么?
Map<String, Integer, Integer>
那是行不通的,因為Map
僅接受兩個類型參數(用於鍵和值),而不是三個。
創建一個代表密鑰的類。 將其用作地圖中的鍵。 注意:密鑰類必須正確實現hashCode
和equals
方法。
您為什么不像這樣創建自定義密鑰-
class MyKey{
int key1;
int key2;
String key3;
// override hashCode & equals
}
然后,您可以使用此類作為密鑰
Map<MyKey, Value>
這取決於您要如何處理:
您可以創建一個bean作為鍵:
public class MyCompositeKey {
private String field1;
private Integer field2, field3;
//getters and setters here
@Override
public int hashCode() {
//your implementation here, you can use here the hashCode of Integer and String
}
@Override
public boolean equals(Object o) {
if (o instanceof MyCompositeKey) {
MyCompositeKey that=(MyCompositeKey) o;
//compare here the fields
}
return false;
}
}
或者,您可以執行以下操作:
String key=field1+"-"+field2+"-"+field3;
並將該字符串用作地圖中的鍵。
或者,也許您只需要一個List<Comparable>
在其中按前綴順序添加三個元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.