您可以为此任务创建自己的收集器:

static Collector averagingWeighted(ToDoubleFunction valueFunction, ToIntFunction weightFunction) {

class Box {

double num = 0;

long denom = 0;

}

return Collector.of(

Box::new,

(b, e) -> {

b.num += valueFunction.applyAsDouble(e) * weightFunction.applyAsInt(e);

b.denom += weightFunction.applyAsInt(e);

},

(b1, b2) -> { b1.num += b2.num; b1.denom += b2.denom; return b1; },

b -> b.num / b.denom

);

}

此自定义收集器将两个函数作为参数:一个是返回用于给定流元素的值的函数(作为ToDoubleFunction),另一个函数返回权重(作为ToIntFunction).它使用一个辅助本地类,在收集过程中存储分子和分母.每次接受一个条目时,分子会随着值与其权重的乘积而增加,分母会随着权重而增加.然后整理器将两者的分割返回为Double.

示例用法是:

Map map = new HashMap<>();

map.put(0.7, 100);

map.put(0.5, 200);

double weightedAverage =

map.entrySet().stream().collect(averagingWeighted(Map.Entry::getKey, Map.Entry::getValue));

java 加权平均_使用Java 8流计算加权平均值相关推荐

  1. java掌握_掌握Java 11的Constantdynamic

    java掌握 为了使JVM对动态语言更具吸引力,该平台的第七版已将invokedynamic引入了其指令集. Java开发人员通常不会注意到此功能,因为该功能已隐藏在Java字节码中. 简而言之,通过 ...

  2. 易语言 java支持_开源Java客户端可以连接易语言服务器

    我们的服务端处理客户端的连接请求是同步进行的, 每次接收到来自客户端的连接请求后, 都要先跟当前的客户端通信完之后才能再处理下一个连接请求. 这在并发比较多的情况下会严重影响程序的性能, 为此,我们可 ...

  3. java 示例_最佳Java示例

    java 示例 什么是Java? (What is Java?) Java is a programming language developed by Sun Microsystems in 199 ...

  4. java 析构函数_《JAVA编程思想》5分钟速成:第5章(初始化和清理)

    第五章.初始化和清理 前言 1.初始化顺序(静态成员.非静态成员,构造器.父类构造器)的排序: 2.构造器(constructor)是否可被重写(override)? 3.final, finally ...

  5. 尚学堂java培训_送给 Java 自学者或者初学者的最全知识清单,2020 年 Java 就该这么学...

    最近逛知乎,发现有很多想自学 Java 或者 Java 初学者提问,不知道如何学习 Java?我接触 Java 快 8 年的时间了,一直从事 Java 开发工作,自己一直升级打怪,对于如何更好的学习 ...

  6. 21点 小游戏 java代码_基于Java的21点扑克游戏的实现

    在上次写的比较牌点的扑克游戏上Java扑克游戏(多人多牌数比较游戏)的实现中,添加21点游戏规则,实现21点牌类游戏.具体实现步骤如下:[需要源代码的留QQ,大家一起探讨探讨哈,谢谢啦!] 抽象出规则 ...

  7. 图书借阅管理用java实现_用java实现图书管理系统。 - 惊觉...

    在学完java基础篇的时候,安排做了一个综合版的java基础项目,可以把之前学到的知识综合运用. 一.项目设计到的知识 1.MVC设计模式思想(分包) >项目分包 运用这种设计模式的优点: MV ...

  8. python解析java文件_读取java文件

    JAVA通信编程(二)--如何读取java的properties配置文件(插播) 如何读取java的properties配置文件本不属于java通讯编程这个系列的范畴,但是在做一些应用中编写通讯编程需 ...

  9. java歌_用java实现歌曲串烧高速版(SequenceInputStream的使用)

    文章最后有完整测试代码 基本代码如下:(代码注释部分不用看,一步步学习SequenceInputStream用的)import java.io.BufferedInputStream; import ...

  10. 谷歌去水印java实现_在Java中实现Google的“您的意思是”功能

    谷歌去水印java实现 介绍 搜索引擎用户经常因各种原因而拼写错误的搜索词,包括键盘问题(键不起作用),陌生的国际名称(例如Sigmund Freud),意外更改一个字母(Sinpsons)或添加一个 ...

最新文章

  1. 资源 | 4天学会PyTorch!香港科技大学开放PyTorch机器学习课件资源
  2. python 几种不同的格式化输出
  3. 单链表中删除指定值的节点
  4. 硬核项目 | 用Arduino做一个神奇的悬浮灯!
  5. 语言语法糖_【c#】几种常用语法糖
  6. NYOJ47过河问题
  7. 惊恐的市场洗牌网游市场诞生危机论
  8. matlab的special函数用法
  9. 桥接文件中file not found
  10. 《The Django Book 2.0》中文版笔记
  11. xp 安装程序在计算机中识别出下列大容量存储设备,大容量存储控制器驱动程序安装步骤[图形]...
  12. php jquery制作抖音,抖音制作优质脚本的方法在这里
  13. 论文笔记:气候变化、水循环和植被动态
  14. 阿里支付系统就该这么设计(万能通用),稳的一批!
  15. Java个人知识点笔记总结
  16. Competition4_t3
  17. 什么是cucumber
  18. linux+gpfs配置文件,GPFS 在 Linux 集群中的灾难恢复
  19. html5 交互作品,20个交互动效很棒的网页设计例子
  20. 相机芯片尺寸及选型公式

热门文章

  1. java毕业设计鞋类秒杀商城Mybatis+系统+数据库+调试部署
  2. 使用MySQL存储过程给表批量造数据
  3. Cisco Packet Tracer 命令大全 【思科交换机模拟器命令大全】
  4. 学生管理系统——数据库表设计
  5. 干货!推荐系统中的异构关系学习
  6. 红米ac2100路由器刷入openwrt教程
  7. ipa包安装到苹果手机中的几种方式——Qt for IOS
  8. 怎么打不开电脑计算机呢,双击我的电脑打不开怎么办
  9. mysql里一个中文多少个字节_mysql里中文占多少个字节?
  10. 《UnityAPI.Cloth布料》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Cloth+friction+useGravity+normals+立钻哥哥++OK++)