日期:2014-05-20  浏览次数:20739 次

HashMap可以这样用吗?
HashMap   map[][]=   new   HashMap[4][5];
map[2][3].put( "companyName ",arrayCompany.get(1).toString());

编译时报java.lang.NullPointerException错误。

------解决方案--------------------
编译的时候报NullPointerException? 什么编译器啊,这么强悍?
------解决方案--------------------
arrayCompany.get(1),确定不是null吗?
------解决方案--------------------
楼主在用map[2][3]之前应该
map[2][3]=new HashMap();

你只创建了数组对象,而没有创建每个HashMap对象
------解决方案--------------------
NullPointerException 属于运行时错误。编译不可能出这种错误的。HashMap本来就是(key,value)
------解决方案--------------------
的确强悍!
------解决方案--------------------
HashMap map[][]= new HashMap[4][5];
map[2][3]=new HashMap();
map[2][3].put( "companyName ",arrayCompany.get(1).toString());

micalorsoftware() ( ) 信誉:100 Blog 2007-01-11 15:42:34 得分: 0
NullPointerException 属于运行时错误。编译不可能出这种错误的。
你拿去编译下就知道报不报这个错了,我帮LZ编译了下 的确这个错

------解决方案--------------------
HashMap map[][]= new HashMap[4][5];
map[2][3]=new HashMap();
map[2][3].put( "companyName ",arrayCompany.get(1).toString());

micalorsoftware() ( ) 信誉:100 Blog 2007-01-11 15:42:34 得分: 0
NullPointerException 属于运行时错误。编译不可能出这种错误的。
你拿去编译下就知道报不报这个错了,我帮LZ编译了下 的确这个错

不知道你用的是什么版本的编译器。总之我用Sun的JDK 1.4,编译的时候是不会报错的。在运行时才会报错。
------解决方案--------------------
HashMap map[][]= new HashMap[4][5];

上面之创建了数组,你这里每个数组元素都是一个HashMap对象,所以使用之前需要初期化。你原来的code,map[2][3]本身是null

需要加上map[2][3] = new HashMap();

map[2][3].put( "companyName ",arrayCompany.get(1).toString());
------解决方案--------------------
HashMap不保证映射的顺序,特别是它不保证该顺序恒久不变。呵呵~~我也了解不深,
所以只好推荐下我自己的简单易懂的方法。
HashMap mapRow= new HashMap();
HashMap mapCol= new HashMap();
mapCol.put( "3 ",arrayCompany.get(1).toString());
mapRow.put( "2 ",mapCol);

这样想取出的时候可以用 String a=(String) ((HashMap)m4.get( "2 ")).get( "3 ");得到。呵呵~~