Java8中那些方便又实用的Map函数
2023-10-31 23:31:46
在Java8中,Map接口中添加了一些非常方便实用的函数,可以大大简化一些特定场景的代码编写,提升代码可读性。下面,我们就一起来看看这些函数吧!
1. merge函数
merge函数可以将两个值合并到一个键中。如果键不存在,它将创建该键并将其值设置为指定值。如果键存在,它将调用指定的合并函数来组合旧值和新值。
Map<String, Integer> map = new HashMap<>();
map.merge("key", 1, (oldValue, newValue) -> oldValue + newValue);
在这个例子中,如果键"key"不存在,它将被创建,并将其值设置为1。如果键"key"已经存在,它将调用合并函数,该函数将旧值和新值相加,并将结果存储在键"key"中。
2. putIfAbsent函数
putIfAbsent函数将一个值放入Map中,如果键不存在。如果键存在,它将什么都不做。
Map<String, Integer> map = new HashMap<>();
map.putIfAbsent("key", 1);
在这个例子中,如果键"key"不存在,它将被创建,并将其值设置为1。如果键"key"已经存在,它将什么都不做。
3. replaceAll函数
replaceAll函数用指定函数的结果替换Map中所有值的函数。
Map<String, Integer> map = new HashMap<>();
map.put("key1", 1);
map.put("key2", 2);
map.replaceAll((key, value) -> value * 2);
在这个例子中,Map中的所有值都将乘以2。
4. computeIfAbsent函数
computeIfAbsent函数与putIfAbsent函数类似,但它允许您指定一个函数来计算值。如果键不存在,它将使用该函数计算该值并将其存储在Map中。如果键存在,它将什么都不做。
Map<String, Integer> map = new HashMap<>();
map.computeIfAbsent("key", key -> key.length());
在这个例子中,如果键"key"不存在,它将被创建,并将其值设置为"key"的长度。如果键"key"已经存在,它将什么都不做。
5. computeIfPresent函数
computeIfPresent函数与computeIfAbsent函数类似,但它只在键存在时才计算值。如果键不存在,它将什么都不做。
Map<String, Integer> map = new HashMap<>();
map.put("key", 1);
map.computeIfPresent("key", (key, value) -> value + 1);
在这个例子中,如果键"key"存在,它将被计算,并将结果存储在键"key"中。如果键"key"不存在,它将什么都不做。
总结
Java8中,Map接口添加了许多非常方便实用的函数,可以大大简化一些特定场景的代码编写,提升代码可读性。这些函数包括merge函数、putIfAbsent函数、replaceAll函数、computeIfAbsent函数和computeIfPresent函数。希望您在以后的项目中可以使用这些函数,让您的代码更加简洁、易读!