jdk8之前
int[] nums = {};
for(int i=0;i<nums.length;i++){
Integer count = map.get(nums[i]);
if(null == count){
map.put(nums[i],1);
}else{
map.put(nums[i],++count);
}
}
jdk8代码实现:
for(int num:nums){
map.put(num,map.getOrDefault(num,0)+1);
}
源码:意思就是当Map集合中有这个key时,就使用这个key值,如果没有就使用默认值defaultValue
default V getOrDefault(Object key, V defaultValue) {
V v;
return (((v = get(key)) != null) || containsKey(key))
? v
: defaultValue;
}
例子:
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
map.put("name", "zhangsan");
map.put("age", "18");
String name = map.getOrDefault("name", "lisi");
System.out.println(name);// zhangsan,map中存在name,获得name对应的value
String sex = map.getOrDefault("sex", "男");
System.out.println(sex);// 男,map中不存在sex,使用默认值“男”
}