как вызвать итератор через hashMap - PullRequest
1 голос
/ 14 августа 2010

Мне нужно увидеть мои ключи и значения hashMap, чтобы проверить, работает ли он правильно. Но я получаю сообщение об ошибке для следующих строк:

Iterator iterator =  myHashMap.keySet().iterator();
    Flows flows = new Flows();
    while(iterator.hasNext()){
        Object key = iterator.next();
        Object value = myHashMap.get(key); // <--
        //here is the error.  suspicious call to java.util.Map.get 
        //expected type Flows, actual type object

        System.out.println(key+" "+value);
    }

мои ключи - это тип Flows, а мои значения - FlowsStatics.

Ответы [ 2 ]

4 голосов
/ 14 августа 2010

Вы объявили myHashMap, используя универсальный тип: например, HashMap?

Если это так, вы должны использовать Generics везде:

Iterator<Flows> iterator =  myHashMap.keySet().iterator();
while(iterator.hasNext()){
    Flows key = iterator.next();
    FlowStatics value = myHashMap.get(key); // <--

или даже:

for(Flows key: myHashMap.keySet().iterator()){
    FlowStatics value = myHashMap.get(key);

или даже:

for(Map.Entry<Flows, FlowStatics> entry: myHashMap.entrySet().iterator()){
    Flows key = entry.getKey();
    FlowStatics value = entry.getValue();
3 голосов
/ 14 августа 2010

Ваш итератор автоматически вернет объекты класса Flows, если вы объявите свой Map как Map<Flows, FlowsStatics>, что вам действительно следует:

while(iterator.hasNext()){
    Flows key = iterator.next();
    FlowsStatics value = myHashMap.get(key);
...