2013-07-19 66 views
0

我寫了一個類,它的構造函數採用List<String>,並返回一個長度爲key(Integer)的字符串的hashmap,其值爲arrayList<String>,它包含字符串。 這就是我試圖將字符串的長度映射到字符串列表。這是我的代碼。如何將元素添加到HashMap,其鍵是Integer,值是ArrayList中的Java?

public class Solver { 
    Map<Integer,ArrayList<String>> inventoryMap; 

    //constructor 
    public Solver(List<String> list){ 
    inventoryMap=new HashMap<Integer,ArrayList<String>>(); 
    for (String s : list) { 
     int x = s.length(); 
     if (inventoryMap.containsKey(x)){ 
      inventoryMap.put(x,inventoryMap.get(x).add(s)); 
     } else { 
      newlist=new ArrayList<String>(); 
      newlist.add(s); 
      inventoryMap.put(x,newlist); 
     } 
     } 
    } 

,當我請編譯這個代碼,我得到以下錯誤

Solver.java:12: put(java.lang.Integer,java.util.ArrayList<java.lang.String>) in java.util.Map<java.lang.Integer,java.util.ArrayList<java.lang.String>> cannot be applied to (int,boolean) 
      inventoryMap.put(x,inventoryMap.get(x).add(s)); 

我想我在加入String elements腳麻到my ArrayList<String>這是地圖 的value你能引導我,我所能可能會出錯?

+1

檢查JavaDocs是否有'ArrayList.add()'... –

回答

2
if (inventoryMap.containsKey(x)) { 
    inventoryMap.put(x,inventoryMap.get(x).add(s)); 
} 

更改此與

if (inventoryMap.containsKey(x)) { 
    inventoryMap.get(x).add(s); 
} 

原因是inventoryMap.get(x).add(s)將返回布爾所以你水溼把布爾到位名單。

由於地圖已經包含列表,所以在列表中添加任何元素都不需要在地圖中放入任何條目。只需從地圖中獲取列表並添加元素即可。

1

inventoryMap.get(x).add(s)返回布爾值,您試圖將其放入地圖中。這是例外的原因。把清單放在地圖上可以解決問題。

0

您的代碼inventoryMap.get(x).add(s)將該值添加到列表中並返回布爾值。 所以你需要有類似的東西。

List<String> list =inventoryMap.get(x); 
list.add(s); 
0

你不能鏈的方法調用一樣,因爲add returns a booleaninventoryMap.put(x,inventoryMap.get(x).add(s))。事實上,你甚至不需要put聲明。由於您不是removeList,其參考將保留在Map中,因此可以看到List的任何更新。

所有你需要的是inventoryMap.get(x).add(s)

0

首先inventoryMap.get(x).add(s)返回boolean(無論成功添加與否的元素)。因此與ArrayList<String>類型不兼容。你可以簡單的做

inventoryMap.get(x).add(s) 

沒有必要顯式調用pur()函數。

其次int x = s.length();應該是Integer x = s.length();。你可以把int放在Integer所期望的位置(不管怎樣,你不能在泛型中使用int)。

0

這一行

 inventoryMap.put(x,inventoryMap.get(x).add(s)); 

問題是inventoryMap.get(x).add(s)將返回boolean和地圖預計這裏List。你需要打破這個說法。是這樣的:

List<String> stirngsList = inventoryMap.get(x); 
stirngsList.add(s); 
相關問題