2015-11-28 2 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

Ваши 2-й список магазинов 'Statistics', так что вы, вероятно, хотите [HashMap.values ​​()] (http://docs.oracle.com/javase/7/docs/api/java/util /HashMap.html) вместо '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()); 
} 
Смежные вопросы