参考方法:getOrDefault()方法的使用
今天在刷leecode题904. 水果成篮时,遇到以下代码:
cnt.put(fruits[right], cnt.getOrDefault(fruits[right], 0) + 1);
其中,对于哈希表中map.getOrDefault()的用法不太了解,故记录如下;
getOrDefault()方法:
(1)getOrDefault(key, default)如果存在key, 则返回其对应的value, 否则返回给定的默认值
(2)key值相同, value值+1或者-1
如上述代码,map.put(s1.charAt(i), map.getOrDefault(s1.charAt(i), 0) + 1); 若没有s1中的字符就是0, 若有s1中的字符就是在原有值上+1;假如是map.put(s2.charAt(i), map.getOrDefault(s2.charAt(i), 0) - 1); 若没有s2中的字符就是0, 若有s2中的字符就是在原有值上-1;
以上是参考方法,个人感觉map.put(s1.charAt(i), map.getOrDefault(s1.charAt(i), 0) + 1)的解释并不透彻,现有以下补充:
map.put(s1.charAt(i), map.getOrDefault(s1.charAt(i), 0) + 1);
若没有s1中的字符 map.getOrDefault(s1.charAt(i), 0) 就是0,整行代码意思是,对map中添加键值对(s1,1);
若有s1中的字符就是在原有值上+1,即map在原有键值对上修改为(s1,原有值+1);
map.put(s2.charAt(i), map.getOrDefault(s2.charAt(i), 0) - 1);
若没有s1中的字符 map.getOrDefault(s1.charAt(i), 0) 就是0,整行代码意思是,对map中添加键值对(s1,1);
若有s1中的字符就是在原有值上-1,即map在原有键值对上修改为(s1,原有值-1);