2014-06-21 66 views
0

我期待在Java/LibGDX中有一個可以將多個原始值作爲鍵的映射。我的具體情況是我有多個需要附加對象的位置(x,y,z)。具有多個原始鍵的Java Map

目前我正在使用一個List(List)作爲鍵的(Object)Map,但是沒有更好的方法嗎?

回答

0

對您的問題的簡短回答是,因爲原始類型不能是Java Map鍵。較長的回答你的問題是容易,使Position類 -

static class Position { 
    int x; 
    int y; 
    int z; 
    Position(int x, int y, int z) { 
    this.x = x; 
    this.y = y; 
    this.z = z; 
    } 
    public boolean equals(Object b) { 
    if (b instanceof Position) { 
     Position other = (Position) b; 
     return this.x == other.x && this.y == other.y && this.z == other.z; 
    } 
    return false; 
    } 
    public int hashCode() { 
    return (Integer.valueOf(x).hashCode()^Integer.valueOf(y) 
     .hashCode()) & Integer.valueOf(z).hashCode(); 
    } 
} 

然後

Map<Position, Object> map; 
+0

當然,這將需要'equals'覆蓋和'hashCode'作爲地圖的關鍵工作。 – Alex

+0

@亞歷克斯良好的捕獲。編輯。 –

+0

Straightly,我得到一個堆溢出使用您的代碼。如果我使用列表,我沒有。 – RobotRock