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

java 时间合并_时间段或时间点,合并。

时间段或时间点,合并。

package algorithms;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

class Tree {

public class TimeTree {

private String value;

private String type;

private TimeTree left;

private TimeTree right;

private int num;

public int getNum() {

return num;

}

public void setNum(int num) {

this.num = num;

}

public String getValue() {

return value;

}

public void setValue(String value) {

this.value = value;

}

public String getType() {

return type;

}

public void setType(String type) {

this.type = type;

}

public TimeTree getLeft() {

return left;

}

public void setLeft(TimeTree left) {

this.left = left;

}

public TimeTree getRight() {

return right;

}

public void setRight(TimeTree right) {

this.right = right;

}

}

public List periodType = Arrays.asList("begin","end");

//添加节点

public TimeTree putTime(TimeTree tree, String time, String type) {

if (tree == null) {

tree = new TimeTree();

tree.setValue(time);

tree.setType(type);

tree.setNum(1);

}

else if (tree.value.compareTo(time) > 0) {

tree.left = putTime(tree.left, time, type);

}

else if (tree.value.compareTo(time) < 0) {

tree.right = putTime(tree.right, time, type);

}

else if (tree.value.compareTo(time) == 0

&& (!tree.type.equals(type) && periodType.contains(tree.type) && periodType.contains(type))) {

--tree.num;

if (tree.num == 0){

tree.setType("point");

}

}

else if (tree.value.compareTo(time) ==0

&& tree.type == type) {

tree.setNum(1+tree.getNum());

}

else if (tree.value.compareTo(time) ==0

&& tree.type.equals("point")) {

}

return tree;

}

public static void main(String args[]) {

Tree tree = new Tree();

TimeTree node = null;

node = tree.putTime(node, "03", "begin");

node = tree.putTime(node, "07", "end");

node = tree.putTime(node, "03", "begin");

node = tree.putTime(node, "04", "end");

node = tree.putTime(node, "02", "begin");

node = tree.putTime(node, "03", "end");

node = tree.putTime(node, "07", "begin");

node = tree.putTime(node, "08", "end");

node = tree.putTime(node, "04", "point");

node = tree.putTime(node, "07", "point");

node = tree.putTime(node, "02", "point");

node = tree.putTime(node, "10", "point");

node = tree.putTime(node, "06", "begin");

node = tree.putTime(node, "09", "end");

List btList = new ArrayList<>();

tree.orderTree(node, btList);

List periodList = tree.TransList(btList);

for (Periods period: periodList) {

System.out.print(period.getBegin() + ",");

System.out.print(period.getEnd());

System.out.println();

}

}

//二叉树中序排序

public void orderTree(TimeTree node, List btList) {

if (node.getLeft() != null) {

orderTree(node.getLeft(), btList);

}

for (int i=0; i

String[] nodes = new String[]{node.getValue(),node.getType()};

btList.add(nodes);

}

if (node.getRight() != null) {

orderTree(node.getRight(), btList);

}

}

//

public class Periods {

private String begin;

private String end;

public String getBegin() {

return begin;

}

public void setBegin(String begin) {

this.begin = begin;

}

public String getEnd() {

return end;

}

public void setEnd(String end) {

this.end = end;

}

}

//游标提取

public List TransList(List orderList) {

List periodList = new ArrayList<>();

int beginNum = 0;

int endNum = 0;

String beginValue = "";

boolean flag = false;

for (String[] order: orderList) {

if (!flag) {

if (order[1].equals("begin")) {

beginValue = order[0];

++beginNum;

flag = true;

}

else if (order[1].equals("point")) {

Periods periods = new Periods();

periods.setBegin(order[0]);

periods.setEnd(order[0]);

periodList.add(periods);

flag = true;

}

}

else if (order[1].equals("begin")) {

++beginNum;

}

else if (order[1].equals("end") && beginNum != endNum) {

++endNum;

}

if (order[1].equals("end") && beginNum == endNum) {

Periods periods = new Periods();

periods.setBegin(beginValue);

periods.setEnd(order[0]);

periodList.add(periods);

//重设

beginNum = 0;

endNum = 0;

beginValue = "";

flag = false;

}

}

return periodList;

}

}

相关文章:

  • mysql5.5.28安装详最后一个步骤时为啥一直转_【转】安装mysql sever 向导失败,最后一步无响应...
  • java actionperformed_java中的事件处理和java中actionPerformed方法的...
  • java代码生成xml_通过java代码生成XML格式文件
  • java fromobject 不能用_jsonobject.fromobject方法转换中出现的问题
  • java中注册的账号存储_java怎么把注册的数据保存到登录里面去?
  • java 剔除节假日_java Android 算一定业务规定的工作日(除去法定节假日、调休周末上班日)代码copy直接用...
  • bash java_如何从Bash Shell脚本正常关闭Java服务?
  • 基岩与java_全面对比《我的世界》基岩版和Java版本的不同,老玩家都清楚
  • java邮件登录系统设计_基于Java web的邮件管理系统的设计与实现(含源文件).doc
  • java读取c 整型_C:从cin读取整数行
  • 蓝桥杯乘法运算java_蓝桥杯java 算法训练 最大的算式
  • java中stream转成FILE_java中FileOutputStream()和FileWriter()的不同 (转)
  • java中软删除_java – Spring Data Rest – 软删除
  • 腾讯 tars java_Tars: 腾讯Tars(TAF)框架OSX平台移植版
  • react上传java_Meteor React ReactRouter文件上传
  • php的引用
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • Docker入门(二) - Dockerfile
  • ES学习笔记(12)--Symbol
  • JavaScript DOM 10 - 滚动
  • js操作时间(持续更新)
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • Vue ES6 Jade Scss Webpack Gulp
  • windows下使用nginx调试简介
  • 大型网站性能监测、分析与优化常见问题QA
  • 普通函数和构造函数的区别
  • 算法系列——算法入门之递归分而治之思想的实现
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 小程序01:wepy框架整合iview webapp UI
  • 新手搭建网站的主要流程
  • 应用生命周期终极 DevOps 工具包
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • ​马来语翻译中文去哪比较好?
  • $.ajax()
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (未解决)macOS matplotlib 中文是方框
  • (五)关系数据库标准语言SQL
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • ******之网络***——物理***
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .net core控制台应用程序初识
  • .net中我喜欢的两种验证码
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • @Autowired和@Resource装配
  • [bzoj1038][ZJOI2008]瞭望塔
  • [C#] 基于 yield 语句的迭代器逻辑懒执行
  • [CISCN 2023 初赛]go_session
  • [HTML]Web前端开发技术28(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [Java] 图说 注解
  • [Jenkins] Docker 安装Jenkins及迁移流程
  • [leetcode]_Symmetric Tree