簡體   English   中英

如何為唯一標識符設置地圖?

[英]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僅接受兩個類型參數(用於鍵和值),而不是三個。

創建一個代表密鑰的類。 將其用作地圖中的鍵。 注意:密鑰類必須正確實現hashCodeequals方法。

您為什么不像這樣創建自定義密鑰-

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM