2015-11-28 47 views
0

基本上我的目標是:list.addAll(___)。我如何正確填充我的列表?

。創建一個新的ArrayList。

。把我的鑰匙放進去。

第一部分終於完美無缺地工作。第二部分不是。我遇到了很多錯誤信息,所以我甚至不知道從哪裏開始。我希望有人能幫助我找出填充這個ArrayList的正確方法,或者給我一個更好的方法來收集我試圖做的信息。

try 
    { 
    fw = new FileWriter(new File("Report.txt")); 

    //HashMap<String, Statistics> statistics; 
    Set<String> keys = statistics.keySet(); 

    for (String i : keys) 
    { 
     System.out.println(i + ": " + statistics.get(i)); 
     System.out.println(i + ": " + inventoryName); 
    } 

    List<Statistics> list = new ArrayList<Statistics>(); 
    list.addAll(keys); 

    for(String i : list) 
    { 

    } 
    fw.close(); 
    } 

錯誤:

Inventory.java:255: error: no suitable method found for addAll(Set<String>) 
     list.addAll(keys); 
     ^
method Collection.addAll(Collection<? extends Statistics>) is not applicable 
    (argument mismatch; Set<String> cannot be converted to Collection<? extends Statistics>) 
method List.addAll(Collection<? extends Statistics>) is not applicable 
    (argument mismatch; Set<String> cannot be converted to Collection<? extends Statistics>) 
Inventory.java:257: error: incompatible types: Statistics cannot be converted to String 
    for(String i : list) 
        ^
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output 
2 errors 
+0

你的第二列表存儲'Statistics',所以你可能想[HashMap.values()](http://docs.oracle.com/javase/7/docs/api/java/util /HashMap.html)而不是'keys()';或者將你的'列表'變更爲'列表' - 但它不會與'keys'不同# – Kenney

+0

你的'列表列表'是爲了保存統計數據,但你正試圖添加它字符串。你覺得它如何工作? – Pshemo

回答

0

可以迭代entrySet。出於性能原因,我建議使用LinkedHashMap。喜歡的東西,

Map<String, Statistics> statistics = new LinkedHashMap<>(); 
// ... 
List<Statistics> list = new ArrayList<>(); 
for (Map.Entry<String, Statistics> entry : statistics.entrySet()) { 
    list.add(entry.getValue()); 
}