【问题标题】:Return Value of put() in HashMapHashMap中put()的返回值
【发布时间】:2013-04-04 20:25:34
【问题描述】:

我无法理解 put()HashMap 中的返回值的解释:

  private Map<Bookmark, Integer> mDevice = new HashMap<String, Integer>();

    String abc = "two"
    Integer ret = mDevice.put(abc, ONLINE);

我说的对吗:

  1. 如果 abc 键已经存在,值为 OFFLINE,则 ret 等于 OFFLINE
  2. 如果 abc 键已经存在,其值为 ONLINE,则 ret 等于 ONLINE
  3. 如果 abc 键不存在,则 ret 等于 null

【问题讨论】:

  • 这是一个合理的问题,为什么是 -1?
  • 看到这就是我问的原因......所以为什么反对票。
  • 其实很简单:如果指定键的映射中已经有一个条目,则返回那个旧条目的值;如果不是,则返回null。所以是的,你写的是正确的。不要让它变得更复杂。
  • 赞成,因为到目前为止 cmets 中没有给出反对票的解释。
  • 我投反对票的原因:javadoc 很清楚。基本上任何答案都是,是的,你是对的,也是对 javadoc 的改写。哦,看,就在我说的时候......

标签: java dictionary syntax


【解决方案1】:

方法 put 的返回类型与 value 相同:

    @Override
    public V put(K key, V value) {
        return putImpl(key, value);
    }

该方法将指定值与此映射中的指定键相关联。如果映射先前包含键的映射,则会替换旧值。

它返回与 key 关联的先前值,如果没有 key 映射,则返回 null。所以,你的观点是正确的。

更多详情请访问here

【讨论】:

    【解决方案2】:
    package com.payu.Payu;
    
    import java.util.*;
    
    public class HashMap_Example {
        public static void main(String[] args) {
    
            // Creating an empty HashMap
            HashMap<Integer, String> hashmap = new HashMap<Integer, String>();
    
            // Mapping string values to int keys
            hashmap.put(10, "HashMap");
            hashmap.put(15, "4");
            hashmap.put(25, "You");
    
            // Displaying the HashMap
            System.out.println("Initial Mappings are: " + hashmap);
    
            // Inserting existing key along with new value
            // return type of put is type of values i.e. String and containing the old value 
            String returned_value = hashmap.put(10, "abc");
    
            // Verifying the returned value
            System.out.println("Returned value is: " + returned_value);
    
            // Inserting new key along with new value
            // return type of put is type of values i.e. String ; since it is new key ,return value will be null
    
            returned_value = hashmap.put(20, "abc");
    
            // Verifying the returned value
            System.out.println("Returned value is: " + returned_value);
    
            // Displayin the new map
            System.out.println("New map is: " + hashmap);
        }
    }
    

    输出:-

    初始映射为:{25=You, 10=HashMap, 15=4}
    返回值为:HashMap
    返回值为:null
    新地图为:{20=abc, 25=You, 10=abc, 15=4}

    【讨论】:

    • hashmap.put(key,value) 的返回类型是 hashmap.put(key,value) 中“值”的返回类型,其中 hashmap 定义如下:- HashMap hashmap = new HashMap();所以 hashmap.put(key,value) 的返回类型是 String,总是 .
    • 您能否为答案添加更多解释,而不是粘贴您的代码和输出?我认为不需要这么多代码,几乎不需要解释。
    • @razdi 如果你仔细阅读代码,你会发现字里行间的意思。代码本身说明了一切
    • @IshanPatel 我完全同意你的看法,coe 自己解释了一切:)
    【解决方案3】:

    当我们调用HashMap put方法时:

    如果地图没有与任何值关联,则返回类型为null,否则返回上一个关联值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-10
      • 2015-12-01
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      相关资源
      最近更新 更多