这篇文章主要介绍了通过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() { /