填充哈希映射时的异常

时间:2013-01-26 18:21:52

标签: java hashmap

Test是我的单独类,它有两个StringFloat类型的字段,我使用此类与列表集合,最终将作为值填充到{{1 }}。

但是当我尝试使用键和List对象(值)将Map填充到地图中时,Java似乎不接受它,因为它不是有效的语法:

HashMap

输出:

ArrayList <Test> list = new ArrayList <Test> ();

Map<Integer, ArrayList <Test>> mp = new HashMap<Integer, ArrayList <Test>>();  

list.add(new Telephone ( 0.9 , "A"));
list.add(new Telephone(5.1 , "A"));

mp.put(0,list.get(0)); // this Does Not work :(, it should work

3 个答案:

答案 0 :(得分:2)

你的地图接受一个I​​nteger作为键,并将TestList的ArrayList作为value.But而不是Test对象的arrayList,你试图放置Telephone对象。 你的IDE清楚地说明了这一点。

Map<Integer,ArrayList<Telephone>> is not applicable for the arguments 
   (int,   Telephone) at Main.main(Main.java:64)

答案 1 :(得分:2)

根据您的要求,您在上面的评论和问题中告诉我,我认为您需要遵循地图声明的以下语法:

Map<Integer,Test> mp = new HashMap<Integer,Test>();

修改

好的是编辑:

ArrayList<Test> list = new ArrayList<Test>();
Map<Integer,ArrayList<Test>> mp = new HashMap<Integer,ArrayList<Test>>();
list.add(new Test(0.1,"A"));
list.add(new Test(0.2,"B"));
mp.put(1,list);

如果您再次想要在键1上放置更多Test对象,请执行以下操作:

List<Test> value = mp.get(1);
value.add(0.3,"c");
value.add(0.5,"E");

mp.put(1,value);

答案 2 :(得分:1)

当您尝试将简单的List对象放在那里时,您的地图只能接受Telephone个对象作为值。