2015-04-17 2 views
0

Спасибо, что прочитали мое сообщение. В настоящее время я занимаюсь школьным проектом и, к сожалению, застрял. У меня есть hashmap типов, которые я хотел бы иметь возможность прокручивать и помещать в структуру массива/списка. Вместо использования Map.Entry у меня есть вспомогательный класс, чтобы сделать код немного менее сложным (им все еще обманут).Как перебирать хэш-карту и помещать в структуру массива/списка?

Helper Класс:

class WordCount { 

     String word; 
     Integer count; 

     WordCount(String word, Integer count) { 
      this.word = word; 
      this.count = count; 
     } 
    } 

и я попытался это:

WordCount[] wc = new WordCount[hm.size()]; 
Iterator it = hm.entrySet().iterator(); 
int i = 0; 
while (it.hasNext()) { 
    Map.Entry pair = (Map.Entry) it.next(); 
    wc[i].word = (String) pair.getKey(); 
    wc[i].count = (Integer) pair.getValue(); 
    i++; 
} 

я получаю ошибки с этим кодом однако. У меня есть ощущение, есть гораздо более простой способ идти об этом ...

+0

Почему вы используете сырые типы? Generics устранит многие из этих приведений и сделает ваш код намного менее подверженным ошибкам. – user2357112

+0

Имеет ли ваш hashmap слово String в качестве ключа, а int - значение Value? Или у вас есть объект класса вместо HashMap? –

+1

Если у вас есть какие-либо исключения или ошибки, не забудьте добавить их в вопрос. – Ian2thedv

ответ

0
List<WordCount> wordcounts = new ArrayList<>(); 

for (String s : hm.keySet()) { 
    int count = hm.get(s); 
    WordCount w = new WordCount(s,count); 
    wordcounts.add(w); 
} 
3

Если вы хотите перенести значения Hashmap в массив самый простой способ я могу думать ОТКЛ

ArrayList<Elements> list = 
    new ArrayList<Elements>(myHashMap.values()); 
1

В java 8:

List<WordCount> words = hm.entrySet().stream() 
          .map(e -> new WordCount(e.getKey(), e.getValue())) 
          .collect(Collectors.toList()); 
Смежные вопросы