2012-07-22 40 views
0

我有對象的列表:我不能ACCES INT []在TreeMap中

static List table_rows = new ArrayList(); 

,我要填充樹狀圖,其由字符串和一個整數數組對象:

for (int i = 0; i < observation_files.length; i++) { 
     TreeMap<String, Integer[]> tm = new TreeMap<String, Integer[]>(); 
     Integer[] cells = new Integer[observation_files.length]; 
     for (int x = 0; x < cells.length; x++) { 
      cells[x] = 0; 
     } 
     tm.put("model" + i, cells); 
     table_rows.add(tm); 
    } 

現在我要訪問的int數組,像這樣:

 table_rows.get(0).get("model1")[0] = 2; 

但日食不會讓我做這件事,給我這個錯誤:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    The method get(String) is undefined for the type Object 
    Syntax error on token ".", Identifier expected after this token 

     at HmmPipeline.main(HmmPipeline.java:102) 

代碼提示或完成給了我什麼都沒有用,我做錯了什麼?

回答

1

原始ArrayList.get()返回類型Object。如果你希望它返回TreeMap<String, Integer[]>,你應該申報的名單爲:

static List<TreeMap<String, Integer[]>> table_rows = new ArrayList<TreeMap<String, Integer[]>>(); 

如果你使用像Eclipse的IDE,它的設置您的代碼編譯選項,以顯示當你使用原始的警告是個好主意(未參數化)類型。儘管它應該已經將你的代碼標記爲無效。

另外,你要做的並不是一個非常有效的存儲基本上是二維平方數組的方法。

+0

我知道,但我需要能夠解決基於字符串,而不是一個序號對應的單元格。我實際上最終得到了TreeMaps的行,它本身就是的地方。 – jorrebor 2012-07-23 06:25:09

1

您需要在table_rows聲明要麼投table_rows.get(0)(TreeMap<String, Integer[]>)或定義:

static List<TreeMap<String, Integer[]>> table_rows = new ArrayList<TreeMap<String, Integer[]>>(); 
1

嘗試

static List<TreeMap<String, Integer[]>> table_rows = new ArrayList<TreeMap<String, Integer[]>>(); 

或者,你需要一個投如下:

((TreeMap<String, Integer[]>)table_rows.get(0)).get("model1")[0] = 2; 

另外,根據您感興趣的功能,你可以參考你TreeMap使用下列接口類型之一的參考 -

  • Map<K,V>
  • NavigableMap<K,V>
  • SortedMap<K,V>
0

你需要聲明你想要使用的ArrayList的類型。

static List<TreeMap<String, Integer[]>> table_rows = new ArrayList<TreeMap<String, Integer[]>>(); 

2.遍歷這樣的地圖..

for (Map.EntrySet(String, Integer) temp : tm.entrySet()){ 

     // use getKey(), getValue() and do whatever u want. 

     }