26-其他说明
其他说明
ConcurrentHashMap 还有远比前一部分内容更多的方法。
forEachKey()和forEachValue():这些方法与forEach()方法相似,但在本案例中,lambda表达式却同时处理了ConcurrentHashMap的key和value。searchEntries()、searchKeys()和searchValues():这些方法与之前介绍过的search()方法很相似。但是,在本案例中,作为参数来传递的lambda表达式接收存储在ConcurrentHashMap中元素的一个Entry对象、一个key或一个value。reduceEntries()、reduceKeys()和reduceValues():这些方法与之前介绍过的reduce()方法很相似。但是,在本案例中,作为参数来传递的lambda表达式接收存储在ConcurrentHashMap中的元素的一个Entry对象、一个key或一个value。reduceXXXToDouble()、reduceXXXToLong()和reduceXXXToInt():这些方法可以通过生成一个double、long或者int型值来促使ConcurrentHashMap的元素聚合起来。computeIfPresent():该方法是computeIfAbsent()方法的补充。在本案例中,它接收一个key和一个实现BiFunction接口的lambda表达式。如果key已经存在于HashMap中,该方法就会执行lambda表达式来计算key的新value。BiFunction接口以key和实际的value作为接收参数,它还会返回一个新的value。merge():该方法以key、value以及实现BiFunction接口的lambda表达式作为接收参数。如果key不存在于ConcurrentHashMap中,则它就会插入对应的value。如果它存在,则执行BiFunction来计算与key相对应的新value。BiFunction接口以key和它的实际value作为接收参数,并返回与key对应的新value。getOrDefault():该方法以key和一个默认的value作为接收参数。如果key存在于ConcurrentHashMap中,则它会返回对应的value。