当前位置: 代码迷 >> J2SE >> 关于java Map put方法的1点疑问?请高手解答
  详细解决方案

关于java Map put方法的1点疑问?请高手解答

热度:160   发布时间:2016-04-23 20:18:56.0
关于java Map put方法的一点疑问?请高手解答
java  Map中有个方法:Object put(Object key, Object value): 将互相关联的一个关键字与一个值放入该映像。如果该关键字已经存在,那么与此关键字相关的新值将取代旧值。方法返回关键字的旧值,如果关键字原先并不存在,则返回null,
我的理解:put是往map中写入键值,写入应该是一个单项操作,告知程序成功或者失败就行了,所以就有了下面的问题:
1、为什么还要有返回值呢,
2、这个返回值又有什么用呢,
3、我看到书上写的是为了与Map接口保持一致,这个“保持一致”几个字该怎么去理解

------解决思路----------------------
至于玩什么要这么设计,我觉得只能去问问当初的设计人员了。

不过有个返回值还是有好处的。否则调用put的时候直接把旧值替换了,调用者都不知道也不好啊。
------解决思路----------------------
1.2 .. 我觉得, 一个方法写的好坏表现出来就是, 这个方法是不是适合尽量多的情况下使用.
首先, 你put之前, 肯定是有那个新值的, 返回的是旧值, 这样如果你有对比新旧两个值之间的差异, 那肯定就用到了... 如果按照你说的写成只返回一个boolean值, 那如果有之前说的需求, 是不是还要自己去重写, 或者最初的设计者是不是还要写另外一个方法呢?

我用java开发了好几年, 说实话还真没用过这个返回值, 但不代表这样设计没有意义. 设计出来的东西只有好和更好, 我觉得这个方法写的比你说的方案更好, 更能处理更多的情况.

3. 你看的类肯定不是map, 因为java里面 map 是一个interface... 别的类既然实现了map这个接口, 那肯定要重写这个方法的啊....
------解决思路----------------------
这问题挺好的,写了这么久了 都没有这么深入的去了解这一块。
------解决思路----------------------
因为方法覆盖的时候返回值类型必须与父类对应方法一致。
------解决思路----------------------
那个返回值是以前的值.
------解决思路----------------------
返回返回值是给你最后一次留恋它的机会,所有集合都是这样的,例如List的remove也是
------解决思路----------------------
返回原来的旧值在某些时候是很有用的,有了新欢但是还要想着旧爱
------解决思路----------------------
* @return the previous value associated with <tt>key</tt>, or
     *         <tt>null</tt> if there was no mapping for <tt>key</tt>.
     *         (A <tt>null</tt> return can also indicate that the map
     *         previously associated <tt>null</tt> with <tt>key</tt>,
     *         if the implementation supports <tt>null</tt> values.)


这是人家接口定义的声明,如果你不按照这个声明来,说明你实现是不符合该接口要求的
  相关解决方案