java 一个map相同的key累加value
【摘要】 在Java中,如果你想要在Map中为相同的key累加value,你可以使用Map.merge()方法,该方法在Java 8及以上版本中可用。以下是一个简单的例子,展示了如何实现这个功能: import java.util.HashMap;import java.util.Map;public class Main { public static void main(String...
在Java中,如果你想要在Map中为相同的key累加value,你可以使用Map.merge()
方法,该方法在Java 8及以上版本中可用。以下是一个简单的例子,展示了如何实现这个功能:
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
// 添加一些初始数据
map.put("A", 1);
map.put("B", 2);
// 假设我们想要为key "A"累加value 3
map.merge("A", 3, Integer::sum);
// 打印结果
System.out.println(map); // 输出: {A=4, B=2}
// 再次为key "A"累加value 5
map.merge("A", 5, Integer::sum);
// 打印结果
System.out.println(map); // 输出: {A=9, B=2}
}
}
在这个例子中,merge()
方法接受三个参数:
-
key
:要合并的键。 -
value
:如果键不存在,则将其与该值一起添加到Map中。 -
remappingFunction
:如果键已经存在,则使用这个函数来重新映射键的值。在这个例子中,我们使用了Integer::sum
,它是一个方法引用,对应于Integer
类的sum
方法,该方法接受两个Integer
参数并返回它们的和。
每次调用merge()
时,如果指定的key已经存在于Map中,它的value就会与提供的value相加。如果key不存在,它就会被添加到Map中,并设置为提供的value。
如果你想避免使用merge()
方法来累加Map中相同key的value,你可以使用传统的if-else
语句或者compute()
方法来实现相同的功能。以下是两种不使用merge()
方法的方法:
使用传统的if-else语句
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
// 添加一些初始数据
map.put("A", 1);
map.put("B", 2);
// 为key "A"累加value 3
if (map.containsKey("A")) {
map.put("A", map.get("A") + 3);
} else {
map.put("A", 3);
}
// 打印结果
System.out.println(map); // 输出: {A=4, B=2}
// 再次为key "A"累加value 5
if (map.containsKey("A")) {
map.put("A", map.get("A") + 5);
} else {
map.put("A", 5);
}
// 打印结果
System.out.println(map); // 输出: {A=9, B=2}
}
}
使用compute()方法
compute()
方法可以在Java 8及以上版本中使用,它可以用来计算key的新value,如果key不存在,则可以使用给定的映射函数来计算新value。
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
// 添加一些初始数据
map.put("A", 1);
map.put("B", 2);
// 为key "A"累加value 3
map.compute("A", (key, value) -> (value == null) ? 3 : value + 3);
// 打印结果
System.out.println(map); // 输出: {A=4, B=2}
// 再次为key "A"累加value 5
map.compute("A", (key, value) -> (value == null) ? 5 : value + 5);
// 打印结果
System.out.println(map); // 输出: {A=9, B=2}
}
}
在这段代码中,compute()
方法接受两个参数:
-
key
:要计算的键。 -
remappingFunction
:一个接受键和当前value作为参数的函数,如果key不存在,则当前value为null。函数的返回值将成为key的新value。 使用compute()
方法可以确保代码的简洁性和功能性的结合,同时避免使用merge()
方法。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)