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

查找list集合中,持续时间>=ContinueTime的数据集合,保存在新的list中

在给定的包含时间戳的list中,查找连续continueNum次的且时间间隔为needDiff的集合。
eg:相邻两个数据的时间戳间隔为1分钟,且超过30分钟有数据

	/**** @param list 包含时间戳(10位)的list* @param continueNum  至少持续的数量* @param needDiff   相邻数据的间隔,单位:s* @return*/public static List<List<TmpBean>> queryContinueList(List<TmpBean> list,int continueNum,long needDiff) {List<List<TmpBean>> result = new ArrayList<>();List<Long> timestamps = list.stream().map(x -> x.getPublishtime()).collect(Collectors.toList());list.sort((x1,x2)->x1.getPublishtime().compareTo(x2.getPublishtime()));if (timestamps.size() < continueNum) {return null; }timestamps.sort(Long::compareTo); // 按照时间戳升序排序List<List<Long>> hisList = new ArrayList<>();long startTime = timestamps.get(0);for (int i = 1; i < timestamps.size(); i++) {long trueTime = startTime + needDiff * i;long realTime = timestamps.get(i);if (trueTime == realTime) {continue;} else {List<TmpBean> delBeans = new ArrayList<>(list.subList(0, i + 1));result.add(delBeans);list.removeAll(delBeans);List<Long> delTimes = new ArrayList<>(timestamps.subList(0, i + 1));//左闭右开hisList.add(delTimes);timestamps.removeAll(delTimes);int nowSize = timestamps.size();if (nowSize < continueNum) {List<TmpBean> delLastBean = new ArrayList<>(list.subList(0,nowSize));result.add(delLastBean);break;} else {startTime = timestamps.get(0);}i = 0;}}List<List<TmpBean>> lists = result.stream().filter(lis -> lis.size() >= continueNum).collect(Collectors.toList());return lists;}public static void main(String[] args) {//调用此方法,可以找到list中所有相邻时间为60s且连续次数>=30的目标listqueryContinueList(list,30,60);}
http://www.lryc.cn/news/357149.html

相关文章:

  • nginx 反向代理配置详解
  • 微信小程序毕业设计-农场驿站平台系统项目开发实战(附源码+论文)
  • CAN总线应用协议CANopen
  • htop安装不了怎么解决
  • vue 笔记02
  • MySQL8.0免安装及phpmyadmin配置
  • 【目标解算】相机内外参数详细解读+坐标系转换
  • 【Unity】颜色混合计算
  • Vue源码解析
  • Linux---网络相关配置
  • MATLAB分类与判别模型算法:基于Fisher算法的分类程序【含Matlab源码 MX_002期】
  • 长文总结 | Python基础知识点,建议收藏
  • centos中使用Docker安装rabbitmq记录
  • STM32系列-STM32介绍
  • 网络原理 一
  • xcode配置快速打开终端命令行工具教程
  • AIGC降重:如何2分钟降低论文AI率和查重率?推荐使用SpeedAI科研小助手
  • Blazor入门-连接MySQL的简单例子:列出数据+简单查询
  • CEEMDAN +组合预测模型(CNN-Transfromer + XGBoost)
  • 箭头函数的意义和函数的二义性
  • 618必买的数码好物有哪些?盘点兼具设计与实用的数码好物分享
  • 【好书分享第十三期】AI数据处理实战108招:ChatGPT+Excel+VBA
  • 001 CentOS 7.9 安装及配置jdk-8u411-linux-x64.tar.gz
  • Revit二次开发-WPF ProgressBar 执行程序中显示进度条
  • React:构建Web应用的未来
  • 【Elasticsearch】Centos7安装Elasticsearch、kibana、IK分词
  • IDEA中各种Maven相关问题(文件飘红、下载依赖和启动报错)
  • Android 13 VSYNC重学习
  • std::move和左值右值
  • QT学习备份