如何在HashMap中的ArrayList中访问ArrayList中的String?

时间:2016-02-08 03:59:11

标签: java arraylist hashmap

所以我有这个ArrayList充满了Strings

ArrayList<String> colours = new ArrayList<>();
    colours.add("Red");
    colours.add("Blue");

并且该ArrayList存储在另一个ArrayList

ArrayList<ArrayList> container = new ArrayList<>();
    container.add(colors);

该ArrayList存储在HashMap

HashMap<Integer, ArrayList> map = new HashMap<>();
    map.put(1, container);

如何访问“红色”?我试过了

System.out.println(map.get(1).get(0).get(0));

但它给了一个

Error: java: cannot find symbol
  symbol:   method get(int)
  location: class java.lang.Object

2 个答案:

答案 0 :(得分:4)

您不应使用ArrayList<ArrayList>之类的原始类型,而应使用完全“熟”类型,例如ArrayList<ArrayList<String>>(或更好,List<List<String>>)。

同样,使用HashMap<Integer, ArrayList>(甚至更好,HashMap<Integer, ArrayList<ArrayList<String>>>)代替Map<Integer, List<List<String>>>

如果进行了这些更改,您的map.get(1).get(0).get(0)表达式将正确编译。

答案 1 :(得分:2)

尝试替换它:

  HashMap<Integer, ArrayList> map = new HashMap<>();

使用:

  HashMap<Integer, List<ArrayList<String>>> map = new HashMap<Integer, List<List<String>>>();

在这种情况下,你可以这样做:

  System.out.println(map.get(1).get(0).get(0));

因为1st的{​​{1}} get(1),第一map的{​​{1}} 2ndget(0)获得了(0)为第二List