2013-08-16 47 views
2

我想做類似這樣的事情,任何人都做了類似的事情? 我有一個解決方案地圖有兩個鍵,我使用它進行地理定位,但我想用n個鍵代替它。可變長度通用類型

import java.util.Collection; 
import java.util.Set; 

public interface NKeyMap<K..., V> { 
    public void clear(); 
    public boolean containsKey(K...); 
    public boolean containsValue(V value); 
    public V get(K...); 
    public boolean isEmpty(); 
    public V put(K..., V value); 
    public V removeK..., V value); 
    public int size(); 
    public Collection<V> values(); 
    public Set<K...> keys(); 
} 
+2

來吧,有什麼問題? –

+1

你有什麼問題? –

+0

不可能像你發佈。無論如何,你有什麼打算?閱讀你的編輯;你可能想要創建''Tupel '',''Tripel ''等鍵(也許看看javatuples提供了這個)。 – qqilihq

回答

2

你不能做無功ARG通用的,但你可以這樣做下面

import java.util.Collection; 
import java.util.Set; 

public interface NKeyMap<K, V> { 
public void clear(); 
public boolean containsKey(K... k); 
public boolean containsValue(V value); 
public V get(K... k); 
public boolean isEmpty(); 
public V put(V value, K...k); 
public V remove(V value, K... k); 
public int size(); 
public Collection<V> values(); 
public Set<K> keys(); 
} 
+0

你究竟在這裏展示了什麼? –

+0

這就是你不能寫像界面NKeyMap ,你需要寫像界面NKeyMap Krushna

+0

這將無法正常工作,因爲既然我需要K是任意類型,K ...可能是長,字符串,類等同一時間。在情景中,我有兩個定義的鍵我可以設置一個長和一個字符串。 –

1

如果需要可變長度密鑰,則可以使用javatuples或類似的東西,它包裹的任意數量和任意類型的自變量(它們提供元組直到長度爲10):

Map<Triplet<Double,Float,Integer>, Object> mapWithCombinedKeys = ...

+0

我將看一看它 –

2

看看這個post的人試圖通過鏈接pair

他這樣做

模擬這個210
Pair<String, Integer> pair = Pairs.pair("hello", 5); 
Pair<Double, Pair<String, Integer>> withDouble = Pairs.pair(3.0, pair); 

,並提出以下使它更清潔

public class Pair<T, U> { ... 
    public <V> Pair<V, Pair<T, U>> prepend(V v) { 
    return pair(v, this); } } 

,使之成爲

Pair<Double, Pair<String, Integer>> pair = Pairs.pair("hello", 5).prepend(3.0); 

注意:您可能需要編寫Pair

注:似乎他居然在最後贊同javatuples ..

更多相關:

閱讀您的評論之後,這更明顯的解決方案提出了自己。 多維地圖,就像multimensional陣列

Map<XKey, Map<YKey, Value> >