Java 流式处理地图以添加值
我有一段代码,在我看来有点笨重。我想让它更具有函数式编程风格,但我正在努力。我想知道是否有人能帮忙(或者这是最好的方式?)Java 流式处理地图以添加值,java,java-8,Java,Java 8,我有一段代码,在我看来有点笨重。我想让它更具有函数式编程风格,但我正在努力。我想知道是否有人能帮忙(或者这是最好的方式?) 私有映射容器; 公共void addItemMap(字符串项,整数数量){ if(集装箱箱(项目)){ 计算(项,(k,v)->Integer.valueOf(v+数量)); }否则{ 容器。放置(项目、数量); } } 谢谢 你只是把那张地图当作计数器吗 我建议您使用guava的Multiset:您的函数只是对的调用。您只是将该地图用作计数器吗 我建议使用guava的M
私有映射容器;
公共void addItemMap(字符串项,整数数量){
if(集装箱箱(项目)){
计算(项,(k,v)->Integer.valueOf(v+数量));
}否则{
容器。放置(项目、数量);
}
}
谢谢 你只是把那张地图当作计数器吗
我建议您使用guava的Multiset:您的函数只是对的调用。您只是将该地图用作计数器吗
我建议使用guava的Multiset:您的函数只是对的调用。您可以使用以下一行代码替换
(如果其他的话)
:
container.compute(item,(k,v) -> v == null ? quantity : Integer.valueOf(v+quantity));
在上述示例中,假设存在非空值
但是,正如Sotirios
在注释中提到的,以及在中提到的,最好在此处使用,如下所示()
您可以将
if else
替换为以下一个衬里:
container.compute(item,(k,v) -> v == null ? quantity : Integer.valueOf(v+quantity));
在上述示例中,假设存在非空值
但是,正如Sotirios
在注释中提到的,以及在中提到的,最好在此处使用,如下所示()
好的,我做完了。我本来打算把它留下,因为它被(正确地)标记为dupe。但很高兴同意这是答案!好的,我做完了。我本来打算把它留下,因为它被(正确地)标记为dupe。但很高兴同意这是答案!
map.merge(item, quantity, Integer::sum)