2013-07-11 17 views
1

我想要運行一個非常簡單的程序,並且我被困在聲明嵌套列表和地圖的基礎上。如何在Java中正確嵌套多個ArrayLists/Maps?

我正在處理一個需要我將多項式存儲到ArrayList中的項目。 每個多項式都被命名,所以我想要一個鍵/值映射來抽取多項式的名稱(1,2,3等)作爲關鍵字,並將實際的多項式作爲值。

現在實際的多項式也需要關鍵值,因爲這個程序的性質要求指數與係數相關聯。

因此,舉例來說,我需要多項式的ArrayList,說的第一個是簡單的:

多項式1:2倍^ 3

數組列表中包含了整個事情的地圖,並在地圖包含鍵:多項式1和值:是一個Map ...,其中2和3是鍵/值。

我有的代碼是在下面,但我不是100%如何格式化這種嵌套的邏輯。

public static void main(String[] args) throws IOException{ 
     ArrayList<Map> polynomialArray = new ArrayList<Map>(); 
     Map<String, Map<Integer, Integer>> polynomialIndex = new Map<String, Map<Integer, Integer>>(); 
     String filename = "polynomials.txt"; 
     Scanner file = new Scanner(new File(filename)); 

     for(int i = 0; file.hasNextLine(); i++){ 
      //this will eventually scan polynomials out of a file and do stuff 

     } 

編輯: 在地圖更新鍵/值,但問題仍然存在。

上面的代碼給我下面的錯誤:

Cannot instantiate the type Map<String,Map<Integer,Integer>> 

那麼,如何然後我去這樣做還是我只是去這一切錯誤的方式?

+0

您正在尋找'名單>'? – NINCOMPOOP

+0

更多相似ArrayList >> 原來的ArrayList不需要鍵/值 – leigero

+0

然後就像'ArrayList >>' ,Map有一個鍵值對。 – NINCOMPOOP

回答

2

您不能實例化new Map<String, Map<Integer, Integer>>(),因爲java.util.Map接口(它沒有構造函數)。你需要使用一個具體類型像java.util.HashMap:也

Map<String, Map<Integer, Integer>> polynomialIndex = new HashMap<String, Map<Integer, Integer>>(); 

,如果你使用的是Java 7或以上,你可以使用generic type inference節省一些打字:

Map<String, Map<Integer, Integer>> polynomialIndex = new HashMap<>(); 
+0

是的,謝謝你,我剛剛意識到這一點。我從來沒有完全確定這意味着什麼,但是現在我開始變得更有意義了,因爲我自己已經遇到了這個問題。 – leigero

1

這是不正確的:

Map<String, Map<Integer>> polynomialIndex = new Map<String, Map<Integer>>(); 

地圖需要有兩個參數,你的嵌套地圖Map<Integer>只有一個。我認爲你正在尋找類似的東西:

Map<String, Map<Integer, Integer>> polynomialIndex = new Map<String, Map<Integer, Integer>>(); 

或者它可能是最好單獨做。

Map<String, Map> polynomialIndex = new Map<String, Map>(); 
Map<Integer, Integer> polynomialNumbers = new Map<Integer, Integer>(); 

用這個,你可以把數字放在polynomailNumbers Map中,然後在polynomialIndex中使用。

+0

我也試過,但它給出了錯誤: 無法實例化類型Map > – leigero

+0

已編輯,也許分離的地圖將工作。 –