Возврат повторяемого списка в Java - PullRequest
1 голос
/ 15 мая 2011

У меня есть Map <A, List<A>> map = new HashMap<A, List<A>>();

Скажем, я хочу распечатать каждый элемент в List<A> через расширенный цикл for

Выполнение map.get(KeyOftypeA) не возвращает итеративный список... кажется, он возвращает общий Object что мне сделать, чтобы вернуть хороший список, который я ввел, и сделать его итеративным? ...

РЕДАКТИРОВАТЬ: Вот полный список кода, который я пытаюсь запустить

import java.util.*;



public class StuffTag {

    public static void main (String[]args){
        String stuff;
        List<String> tags = new ArrayList();
        Map<String,List<String>> stuff_tags = new HashMap<String,List<String>>();
        List<Map> list_stuff_tags = new ArrayList();

        stuff="David and Goliath";
        tags.add("fire");
        tags.add("water");
        tags.add("smoke");
        tags.add("paper");

        stuff_tags.put(stuff, tags);
        list_stuff_tags.add(stuff_tags);
        Map el =list_stuff_tags.get(0);
         for(String x:el.get("David and Goliath"))
             System.out.println(x);

    }

}

Ответы [ 2 ]

1 голос
/ 15 мая 2011

Вам необходимо определить тип Map el например, Map<String,List<String>> el =list_stuff_tags.get(0); это будет работать для вас.

1 голос
/ 15 мая 2011
List<A> list = (List<A>)map.get(KeyOfTypeA);

В любом случае, похоже, что-то не так.Если ваш тип A указан правильно во время компиляции, вам не нужно делать это приведение.Как вы указываете тип A

Возможно, вы не указываете тип.Предположим, что A является строковым типом, где-то в вашем коде вы должны были сделать что-то подобное:

class yourClassStoringHashMap <A>{
       Map <A, List<A>> map;
}
class whereYouInstantiate{
 static void int main(){
       yourClassStoringHashMap<String> instance = new yourClassStoringHashMap<String>();
       //probably you are doing yourClassStoringHashMap instance = new yourClassStoringHashMap();
 }
}

Компилятор должен выдать предупреждение в этой строке.* Вот проблема

List<String> tags = new ArrayList(); //should be new ArrayList<String>
...