2013-05-01 24 views
0

我想將一個元組和一個值的排序存儲爲一個條目。我的意思是這樣的由一個元組及其值構成的記錄的高效數據結構

A B -> 1 
A C -> 2 
E F -> 3 
C D -> 4 

前兩個值總是唯一的,從某種意義上說,A和B只出現在一起。爲了達到這個目的,有效的數據結構是什麼?請記住,我可能需要從條目中有效地提取任何三個字段?

如果可能,請提供一些相關的代碼!

+4

你嘗試過什麼? – 2013-05-01 18:24:20

+0

也許與[HashMap](http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html)有關? – ajp15243 2013-05-01 18:25:49

回答

7

A Map會運作良好。你需要有一個對象來表示前兩項。確保hashCodeequals方法在您的新課程上正確實施。然後你可以使用該類來獲得密鑰。

Map<MyKeyClass, Integer> map = new HashMap<MyKeyClass, Integer>(); 
map.put(new MyKeyClass("A", "B"), 1); 
map.put(new MyKeyClass("A", "C"), 2); 
+2

同意。如果可能的話,讓地圖的關鍵字不變。 – Nick 2013-05-01 18:30:03

+0

你能否提供一些代碼片段? – OneMoreError 2013-05-01 18:36:15

0

試試這個:

public class MyData{ 
    public char name, fname; 
    public int value; 

public Foo(char name, char fname, int value){ 
    this.name = name; 
    this.fname = fname; 
} 
} 
+1

什麼都不讓它們獨一無二。 (在構造函數中也缺少'value'的設置。 – 2013-05-01 18:27:59

1

我建議你使用HashMap,例如:

public class Test { 
    public void TestHashMap() { 
     Map<Tuple<String,String>, Integer> myMap = new HashMap<Tuple<String,String>, Integer>(); 
     myMap.put(new Tuple<String,String>("A","B"), 1); 
     myMap.put(new Tuple<String,String>("A","C"), 2); 

     myMap.get(new Tuple<String,String>("A","C")); 
    } 
} 
相關問題