当前位置: 首页 > news >正文

list集合使用

目录

方法

场景题

1、集合内的数据累加

2、集合内500条数据,每个数据对象List 值,List[i]与List[i]相加求均值


方法

场景题

1、集合内的数据累加

// 遍历源数据计算总和// 初始化计算参数
int dataCount = drivingList.size();
double validValueSum = 0.0;
double totalPowerSum = 0.0;
for (SetDriving driving : drivingList) {// 1. 计算有效值和总功率的总和if (driving.getValidValue() != null) {validValueSum += driving.getValidValue();}if (driving.getTotalPower() != null) {totalPowerSum += driving.getTotalPower();}
// 设置平均值(处理空数据情况,避免0.0不合理,建议用null)
Double validValue = calculateAverage(validValueSum, dataCount);
Double totalPower = calculateAverage(totalPowerSum, dataCount);

2、集合内500条数据,每个数据对象List<folat> 值,List[i]与List[i]相加求均值

// 频谱(假设固定长度为500)
List<Float> avgFftBufList = new ArrayList<>(Collections.nCopies(500, 0.0f));
// 记录每个索引的有效数据条数(用于处理部分数据长度不足的情况)
int[] fftCount = new int[500];List<Float> fftBufList = setDrivingProto.getFftBufList();// 累加频谱数据(确保列表长度为500,避免数组越界)for (int i = 0; i < Math.min(fftBufList.size(), 500); i++) {//替换list,i位[avgFftBufList第i位值+fftBufList第i位值]avgFftBufList.set(i, avgFftBufList.get(i) + fftBufList.get(i));// 记录该索引的有效数据条数fftCount[i]++;}// 计算频谱和PSD的平均值(处理有效数据条数为0的情况)
for (int i = 0; i < 500; i++) {if (fftCount[i] > 0) {avgFftBufList.set(i, avgFftBufList.get(i) / avgFftBufList.size());}
}

         // 初始化计算参数int dataCount = drivingList.size();double validValueSum = 0.0;double totalPowerSum = 0.0;// 频谱和PSD的平均值列表(假设固定长度为500,与源数据一致)List<Float> avgFftBufList = new ArrayList<>(Collections.nCopies(500, 0.0f));List<Float> avgPsdBufList = new ArrayList<>(Collections.nCopies(500, 0.0f));// 记录每个索引的有效数据条数(用于处理部分数据长度不足的情况)int[] fftCount = new int[500];int[] psdCount = new int[500];// 遍历源数据计算总和for (SetDriving driving : drivingList) {// 1. 计算有效值和总功率的总和if (driving.getValidValue() != null) {validValueSum += driving.getValidValue();}if (driving.getTotalPower() != null) {totalPowerSum += driving.getTotalPower();}// 2. 处理文件路径中的频谱和PSD数据String filePath = driving.getFilePath();if (filePath != null && !filePath.isEmpty()) {InputStream inputStream = null;try {// 从MinIO获取文件流inputStream = minioUtil.downFileStream(filePath, "das");if (inputStream == null) {log.error("文件流为空,路径:{}", filePath);return;}// 解析文件数据DrivingProto.Driving drivingDataObject = SectionDataParseUtil.getDrivingDataObject(inputStream);List<Float> fftBufList = drivingDataObject.getFftBufList();List<Float> psdBufList = drivingDataObject.getPsdBufList();// 累加频谱数据(确保列表长度为500,避免数组越界)for (int i = 0; i < Math.min(fftBufList.size(), 500); i++) {avgFftBufList.set(i, avgFftBufList.get(i) + fftBufList.get(i));// 记录该索引的有效数据条数fftCount[i]++;}// 累加PSD数据for (int i = 0; i < Math.min(psdBufList.size(), 500); i++) {avgPsdBufList.set(i, avgPsdBufList.get(i) + psdBufList.get(i));psdCount[i]++;}} catch (Exception e) {log.error("解析文件失败,路径:{}", filePath, e);} finally {// 强制关闭流,避免资源泄漏if (inputStream != null) {try {inputStream.close();} catch (Exception e) {log.error("关闭文件流失败", e);}}}}}// 计算频谱和PSD的平均值(处理有效数据条数为0的情况)for (int i = 0; i < 500; i++) {if (fftCount[i] > 0) {avgFftBufList.set(i, avgFftBufList.get(i) / avgFftBufList.size());}if (psdCount[i] > 0) {avgPsdBufList.set(i, avgPsdBufList.get(i) / avgPsdBufList.size());}}// 设置平均值(处理空数据情况,避免0.0不合理,建议用null)Double validValue = calculateAverage(validValueSum, dataCount);Double totalPower = calculateAverage(totalPowerSum, dataCount);}/*** 抽取计算平均值的方法** @param sum* @param count* @return*/private Double calculateAverage(double sum, int count) {return count > 0 ? sum / count : null;}

http://www.dtcms.com/a/609695.html

相关文章:

  • DuoPlus更新|新增云手机自定义SIM号码、代理备注等多重功能!
  • 安卓手机/平板/TV版 Rotation强制横屏显示工具!免ROOT可用!再推荐突破手机限制的3款神器
  • Gopeed+cpolar:跨平台下载任务的云端穿透解决方案
  • 手机Basic语言编译器 | 专为手机开发的编程工具与应用场景分析
  • 驾校网站建设滴滴友链
  • Modbus TCP 转 Modbus RTU物联网网关实现光伏产线西门子与罗克韦尔PLC互联
  • Sharding-jdbc 假如全表有20年的数据,按年分表,只需要查最近五年的,该怎么处理
  • 第7章:网络分析与可达性评估
  • 电子电气架构 -- bus off的机理和处理机制
  • leetcode 2536
  • OpenAI与百度同日竞速,文心5.0以原生全模态重新定义AI理解力
  • 【高级机器学习】 12. 强化学习,Q-learning, DQN
  • 网站怎么做视频的软件泰安有什么互联网公司
  • uniapp h5 app 小程序获取当前定位
  • 重庆潼南网站建设哪家好沈阳市建设工程安全监督站网站
  • [特殊字符] 嵌入式音频接口全景图解:I2S、TDM、PDM、SPDIF、AC’97 与 PCM 的关系
  • 从 API 到应用:用 Rust 和 SQLx 为 Axum 服务添加持久化数据库
  • 【高级机器学习】 9. 代理损失函数的鲁棒性
  • 测试之测试用例篇
  • 做网站优化推广的好处网站界面设计实验报告
  • 自建node云函数服务器
  • TRO侵权预警|Lauren动物插画发起维权
  • Rust实战:使用Axum和SQLx构建高性能RESTful API
  • 波动率曲面分解法在期货价差套利策略中的应用研究
  • 泌阳县住房建设局网站网站seo排名优化工具在线
  • 电子商务网站建设课北京建设网官方网站
  • vr大空间体验馆,vr大空间是什么意思啊?
  • Node.js实现WebSocket教程
  • 朝阳区搜索优化seosem百度seo关键词排名优化工具
  • C++初阶