正如前面已经提到的那样,map是不支持流操作的。而更新后的map现在则支持多种实用的新方法,来完成常规的任务。 

Java代码 
  1. Map<Integer, String> map = new HashMap<>();  
  2.    
  3. for (int i = 0; i < 10; i++) {  
  4.     map.putIfAbsent(i, "val" + i);  
  5. }  
  6.    
  7. map.forEach((id, val) -> System.out.println(val));  

上面的代码风格是完全自解释的:putIfAbsent避免我们将null写入;forEach接受一个消费者对象,从而将操作实施到每一个map中的值上。 

下面的这个例子展示了如何使用函数来计算map的编码: 

Java代码 
  1. map.computeIfPresent(3, (num, val) -> val + num);  
  2. map.get(3);             // val33  
  3.    
  4. map.computeIfPresent(9, (num, val) -> null);  
  5. map.containsKey(9);     // false  
  6.    
  7. map.computeIfAbsent(23, num -> "val" + num);  
  8. map.containsKey(23);    // true  
  9.    
  10. map.computeIfAbsent(3, num -> "bam");  
  11. map.get(3);             // val33  

接下来,我们将学习,当给定一个key值时,如何把一个实例从对应的key中移除: 

Java代码 
  1. map.remove(3"val3");  
  2. map.get(3);             // val33  
  3.    
  4. map.remove(3"val33");  
  5. map.get(3);             // null  

另一个有用的方法: 

Java代码 
  1. map.getOrDefault(42"not found");  // not found  

将map中的实例合并也是非常容易的: 

Java代码 
  1. map.merge(9"val9", (value, newValue) -> value.concat(newValue));  
  2. map.get(9);             // val9  
  3.    
  4. map.merge(9"concat", (value, newValue) -> value.concat(newValue));  
  5. map.get(9);             // val9concat  

合并操作先看map中是否没有特定的key/value存在,如果是,则把key/value存入map,否则merging函数就会被调用,对现有的数值进行修改。 

延伸阅读

向着Java前进-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训向着Java前进