所以我有这个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
答案 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}} 2nd
和get(0)
获得了(0)为第二List
。