Map map = new HashMap(); 这个其实你定义的是一个接口,你调用这个接口来实现你要完成的动作,这样别人直接用你这个接口就可以了,而不用关心你具体是怎么实现这个接口的,假如以后有变动的话,你不用在去管这个接口,只去改下你的实现类就可以了,方便维护,隔离性强。
HashMap map = new HashMap(); 而这个 你定义的就是一个实现类,你把这个实现类给别人用,在出现问题和改动的话,那么程序就无法运行,凡是用到这个类的地方都要修改,维护起来很麻烦,而上面的接口,你只需要改你实现这个接口的实现类就可以了。
Map是接口,HashMap是Map的一种实现。 接口不能被实例化。
Map map=new HashMap(); 就是将map实例化成一个HashMap。
这样做的好处是调用者不需要知道map具体的实现,map接口与具体实现的映射java帮你做了。
打个比方,你是一个头头,手下有几个人:张三,李四等等。你需要手下做一件事情,你关心的是有没有人做,而不关心到底是谁去做,你只需要喊一声:“来人!”
具体的是哪个人进来帮你做事无所谓。
如果说这样写: HashMap map = new HashMap();
就相当于你指定要张三做事:“来张三!”