当前位置: 首页 > 编程笔记 >

通过java记录数据持续变化时间代码解析

山寒
2023-03-14
本文向大家介绍通过java记录数据持续变化时间代码解析,包括了通过java记录数据持续变化时间代码解析的使用技巧和注意事项,需要的朋友参考一下

这篇文章主要介绍了通过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}]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 我的DynamoDB表有大约1亿(30GB)个项目,我为它配置了10k RCU。我正在使用数据管道作业导出数据。 将DataPipeline读取吞吐量比设置为0.9。 如何计算完成导出的时间(管道完成导出需要4个多小时) 我如何优化它,使导出在更短的时间内完成。 读取吞吐量比率如何与DynamoDB导出相关?

  • 我正在做一个项目(在Codeigniter中),我需要计算视频的持续时间,它在我的网站上运行,但保存在YouTube服务器上。我怎么知道视频被完全观看了呢。

  • 在ISO 8601中,持续时间的格式为<code>P[n]Y[n]M[n]DT[n]H[n]M[n]S。 例子: 20秒: 一年两个月三天四小时五分钟六秒: 问题: 给定一个包含iso 8601格式的持续时间的字符串。我想获得这段时间的总秒数。标准C 11中推荐的实现方式是什么? 备注: 例如,boost DateTime中有ptime from _ iso _ string(STD::strin

  • 问题内容: 我需要计算用户在网站上花费的时间。登出时间与登出时间之间的区别是,给我类似“ X先生花了4个小时43分钟”。因此,为了存储the4小时43分钟,我这样声明: 时间NOT NULL 这是有效的还是更好的存储方式?我需要存储在数据库中,因为我还有其他计算需要将其用于+其他用例。 问题答案: 最好将其存储为整数秒数。 该会是干净和简单-即 正如Tristram所指出的,使用该字段存在局限性

  • 在ISO 8601中,持续时间的格式为PT5M(5分钟)或PT2H5M(2小时5分钟)。我有一个JSON文件,其中包含这种格式的值。我想知道spark是否可以提取分钟的持续时间。我尝试将其读取为“DateType”,并使用“minutes”函数获取分钟数,结果返回空值。 示例json 目前,我正在将其作为字符串读取并使用“regex_extract”函数。我想知道一种更有效的方法。 https:/

  • 问题内容: 如何获取格式为2个字符串的持续时间? 我正在尝试使用Calendar类并检查。我与此有关的问题是它不一致。知道我在做什么错吗?每次我运行该程序时,如果没有,输出40-70行到控制台。 问题答案: 那是一个已记录的错误。 尝试在设置日历之前清除日历:

  • 许多记者将显示测试持续时间,以及标记缓慢的测试,如“spec”记者所示: 要调整被认为“慢”的东西,您可以使用以下slow()方法: describe('something slow', function() { this.slow(10000); it('should take long enough for me to go make a sandwich', function() { /