2017-04-25 127 views
0

首先,我只是最近纔開始使用Java,所以對其他人可能看起來很明顯的東西可能不會出現在我看來。Java MAP幫助

我正在嘗試實施測驗應用程序,其中一個規定是我從外部文件中讀取問題並將問題存儲在MAP結構中。

我看着這個和它看起來的MAP存儲鍵和值...

難道我就在想,我可以在idetifier存儲爲鍵,然後的其餘信息作爲值,儘管它的其餘部分由兩個不同數據類型(2個整數,一個字符串和一個字符串數組)組成的4個元素組成?

如果我assumtion是正確的,我將如何實施,作爲任何文件,我發現類似於以下內容:

HashMap<Integer, String> questionMap = new HashMap<Integer, String>(); 

任何幫助或在正確的方向輕推是極大的讚賞。

問題類目前由(我卸妝的getter和setter方法,以節省空間,在這裏:

public class Question { 
    public int identifier; 
    public String type; 
    public String question; 
    public String[] options; 
    public int answer; 
} 

回答

2

首先創建一個類來保存你的問題的信息,然後將其用於您的值地圖,例如:

HashMap<Integer, Question> questionMap = new HashMap<Integer, Question>(); 
+0

您還沒有定義什麼問題' '是。 – lucasvw

2

它的其餘部分由兩個不同數據類型的4個元素(2個整數,字符串和字符串數組)的

01?

這聽起來好像是你想要編寫自己的類

public class Data { 
    int id: // optional 
    int a, b; 
    String c; 
    String[] d; 
} 

那麼你的地圖將是類型<Integer, Data>的對象,我會建議一個TreeMap如果你想訂購的問題

0

我是否認爲我可以存儲一個關鍵字作爲關鍵字,然後將其餘的信息作爲值存儲,即使其餘部分由兩個不同數據類型的4個元素組成(2個整數,a str ing和一個字符串數組)?

不,鍵和值都必須是單一數據類型。 你通常會在這種情況下,做的是創建一個encapsules您的數據你自己的數據結構:

public class Question { 
    private int id; 
    private int score; 
    private String question; 

    // Constructor, Getters & Setters 
    //.... 
} 

然後你可以使用該數據類型的值

Map<Integer, Question> questionMap = new HashMap<Integer, Quesiton>();