java 记录数据持续变化时间

1.需求:获取count为null和不为null的持续变化

[{count=0, time=0},
{count=10, time=1000},
{count=20, time=2000},
{count=30, time=3000},
{count=40, time=4000},
{count=null, time=5000},
{count=null, time=6000},
{count=null, time=7000},
{count=null, time=8000},
{count=null, time=9000},
{count=100, time=10000},
{count=110, time=11000},
{count=120, time=12000},
{count=130, time=13000},
{count=140, time=14000}]

2.代码如下:

package com.stop;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * static boolean temp_flag; // 记录容器
    public void execute(boolean flag) {
        if (temp_flag == flag) {
            // 没有变化
        } else {
            if (flag == false) {
                // 上次是true,本次是false
            } else {
                // 上次是false本次是true
            }
        }
    }
 */
public class Test {
    public static List<Map<String, Object>> buildList() {
        List<Map<String, Object>> items = new ArrayList<>();
        for(int i=0;i<5;i++) {
            Map<String,Object> map = new HashMap<>();
            map.put("time", i*1000);
            map.put("count", i*10);
            items.add(map);
        }
        for(int i=5;i<10;i++) {
            Map<String,Object> map = new HashMap<>();
            map.put("time", i*1000);
            map.put("count", null);
            items.add(map);
        }
        for(int i=10;i<15;i++) {
            Map<String,Object> map = new HashMap<>();
            map.put("time", i*1000);
            map.put("count", i*10);
            items.add(map);
        }
        return items;
    }

    public static void main(String[] args) {
        // 构造数据
        List<Map<String, Object>> items = buildList();

        List<Map<String, Object>> list = new ArrayList<>();
        boolean isStop = false;// 记录容器
        for (int i = 0; i < items.size(); i++) {
            boolean flag = items.get(i).get("count") == null;
            if (i == 0) {
                Map<String, Object> map = new HashMap<>();
                if (flag) {
                    map.put("stop", items.get(i).get("time"));
                    isStop = true;
                } else {
                    map.put("recover", items.get(i).get("time"));
                }
                list.add(map);
                continue;
            }
            if (isStop == flag) {
                // 没有变化
            } else {
                isStop = flag;
                Map<String, Object> map = new HashMap<>();
                if (!flag) {
                    // 上次是true,本次是false
                    map.put("recover", items.get(i).get("time"));
                } else {
                    // 上次是false本次是true
                    map.put("stop", items.get(i).get("time"));
                }
                list.add(map);
            }
        }
        System.out.println(list);
    }

}

3.运行main方法结果

[{recover=0}, {stop=5000}, {recover=10000}]

原文地址:https://www.cnblogs.com/zcjyzh/p/12188223.html

时间: 2024-11-15 00:50:46

java 记录数据持续变化时间的相关文章

navicat查看mysql数据表记录数不断变化

在使用navicat进行数据库管理的时候,在查看表对象的时候会发现,每次刷新,数据表的记录数不断变化,尤其是大表. 对于100万的数据经常会显示九十几万,当然通过count(*)出来的数据是正确的. 非常疑惑,查了一下资料,原来和存储引擎有关.官方说明: The number of rows. Some storage engines, such as MyISAM, store the exact count. For other storage engines, such as InnoDB

Java导出数据行写入到Excel表格:基于Apache POI

Java导出数据行写入到Excel表格:基于Apache POI import java.io.File; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class Excel

42步进阶学习—让你成为优秀的Java大数据科学家!

作者 灯塔大数据 本文转自公众号灯塔大数据(DTbigdata),转载需授权 如果你对各种数据类的科学课题感兴趣,你就来对地方了.本文将给大家介绍让你成为优秀数据科学家的42个步骤.深入掌握数据准备,机器学习,SQL数据科学等. 本文将这42步骤分为六个部分, 前三个部分主要讲述从数据准备到初步完成机器学习的学习过程,其中包括对理论知识的掌握和Python库的实现. 第四部分主要是从如何理解的角度讲解深入学习的方法.最后两部分则是关于SQL数据科学和NoSQL数据库. 接下来让我们走进这42步进

Angularjs【监听数据的变化】和【如何修改数据】和【数据变化的传播】

一:监听数据的变化: 由于编译仅仅在启动引导时执行一次,这意味着我们的link函数只会被调用一次,那么, 如果数据变化,在界面上将不会有任何反馈,即界面和数据将变得不同步了. 这需要持续监听数据的变化. 好在AngularJS的scope对象可以使用$watch()方法,对建立在其上的变量的变化进行监听: watch(watchExpression,listener,[objectEquality]);watch方法要求传入三个参数: watchExpression - 要监听的表达式,比如:"

如何记录数据表信息的变更

在操作数据记录时,对重要的数据,我们需要记录每一次的变更,有没有好的方法呢? 在通用权限管理系统中提供了记录数据表信息变更的方法. 一.先看看效果截图 二.再看看修改记录表的表结构 三.对该表访问的业务类 1 public partial class ModifyRecordManager : BaseManager, IBaseManager 2 { 3 /// <summary> 4 /// 构造函数 5 /// </summary> 6 public ModifyRecord

Java 8的日期和时间API

本节继续探讨Java 8的新特性,主要是介绍Java 8对日期和时间API的增强,关于日期和时间,我们在之前已经介绍过两节了,32节介绍了Java 1.8以前的日期和时间API,主要的类是Date和Calendar,由于它的设计有一些不足,业界广泛使用的是一个第三方的类库Joda-Time,关于Joda-time,我们在33节进行了介绍.Java 1.8学习了Joda-time,引入了一套新的API,位于包java.time下,本节,我们就来简要介绍这套新的API. 我们先从日期和时间的表示开始

Java大数据人才应用领域广,就业薪酬高

互联网创造了大数据应用的规模化环境,大数据应用成功的案例大都是在互联网上发生的, 互联网业务提供了数据,互联网企业开发了处理软件,互联网企业的创新带来了大数据应用 的活跃,没有互联网便没有今天的大数据产业.没有互联网.云计算.物联网.移动终端与 人工智能组合的环境大数据也没那么重要.大数据的价值并非与生俱来而是应用创新之结果 ,价值是由技术组合创新涌现出来的.离开环境的支持大数据毫无价值,就像离开了身体的 手不再有手的功能一样. 随着2017年大数据各种应用的发展,大数据的价值得以充分的发挥,大

请教 - 关于使用文本文件记录数据慢的问题

软件使用文本文件来记录数据,前些天以客户反映,数据写入时间太长,能不能设置不记录数据,因为之前测试的时候,测试400个点的数据,写入的时间也就在1秒钟的样子,而客户实际写入是需要到一分半钟. 起初以为是不是系统的问题,因为给客户配置的是笔记本电脑,使用的win10家庭版的系统,而之前一直使用的是win7的系统,我想那就给客户改下程序,不记录数据,暂时使用. 这两天空闲下来,进行测试,分别测试了win7和win10的系统,起初没有发现异常,写入速度都挺快的,但是经过多次写入的话,写入的数据就开始变

中软卓越java大数据培训,实战铸高端IT人才!

随着互联网行业的竞争越来越激烈,单纯的软件开发已经不能满足企业需求了,数据才是其生存壮大,获得资本市场青睐的最大筹码.所以,有前瞻性的程序员都在学习大数据,先人一步拿高薪,引领IT方向,不被市场所淘汰.中软卓越java大数据培训凭着无可替代的优势受到学员的青睐,坚持用实战项目铸高端IT人才,拒绝只停留在口号和理论. 相较于其他填鸭教学的培训机构,中软卓越有着其可望而不可即的优势,深深地拉开了彼此之间的层次段位.那么中软卓越Java大数据培训的核心优势究竟体现在哪些方面呢? 一.软件出身,行业背景