关于java的Map中put()的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于java的Map中put()的问题相关的知识,希望对你有一定的参考价值。

public class Personmanage
private HashMap persontypemap;
public void test()
HashMap hm = new HashMap();
hm.put("k1","value");//这句正常
persontypemap.put("k1","value");//这句报错


报java.lang.NullPointerException错误,实在想不通为什么,是put()方法的问题吗?

你定义的类变量没有初始化,当然空指针
定义的时候应该改成private HashMap persontypemap= new HashMap();
参考技术A private HashMap<String,String> persontypemap = new HashMap<String,String>();

集合不光要实例化,还要指定存放的数据的类型

java中put()里的参数问题

Map m1=new HashMap();
m1.put("one",new Integer(1));
右边的value值加个new是什么意思? 为什么看到有些程序可以m1.put("one",freq(常数));
右边的value值到底要是一个常数还是对象?

put 第一个是key ,第二个是value,
value加个new,表示新建一个对象放入到map中,仅仅是一个做法而已。
右边要求一个对象,至于freq(常数),只是调用freq方法,把freq的返回值作为value而已。追问

右边要求一个对象 那为什么返回的值还可以放进去呢?莫非那个返回值也可称作一个对象?

追答

返回值当然可以是对象。

参考技术A 要一个对象。
但jdk5以后有autoboxing功能,也就是如果方法需要的是对象,你传入的是int,它会自动帮你转成Integer。double转成Double,以此类推。本回答被提问者采纳
参考技术B Map<String, String> m1=new HashMap<String, String>();
Map<String, Integer> m1=new HashMap<String, Integer>();
Map<Integer, Integer> m1=new HashMap<Integer, Integer>();
Map<Integer, String> m1=new HashMap<Integer, String>();

以上是关于关于java的Map中put()的问题的主要内容,如果未能解决你的问题,请参考以下文章

关于Java的Map

关于java Map和Collection接口

关于java object对象中的map取值问题。。。

关于java中HasMap的遍历输出不按顺序

关于java中HasMap的遍历输出不按顺序

一个关于java的问题,把对象存Map里,再把Map存List里,怎么取出全部,我只取出最后一个,是否覆盖了?