java 校验排序是否有交叉

2024-04-24 02:44
文章标签 java 校验 排序 交叉 是否

本文主要是介绍java 校验排序是否有交叉,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;public class TimeOverlapChecker {public static void main(String[] args) {// 1. 获取待判断的时间段列表ArrayList<TimeRange> timeRangeslist = new ArrayList<TimeRange>();TimeRange timeRange1 = new TimeRange(new BigDecimal(1.1),new BigDecimal(2.2),1);TimeRange timeRange2 = new TimeRange(new BigDecimal(3.1),new BigDecimal(9.2),3);TimeRange timeRange3 = new TimeRange(new BigDecimal(8.1),new BigDecimal(15.2),2);TimeRange timeRange4 = new TimeRange(new BigDecimal(16.1),new BigDecimal(19.2),4);// 添加时间段到列表timeRangeslist.add(timeRange4);timeRangeslist.add(timeRange1);timeRangeslist.add(timeRange3);timeRangeslist.add(timeRange2);// 2. 对时间段列表按照开始时间进行排序Collections.sort(timeRangeslist, new Comparator<TimeRange>() {public int compare(TimeRange tr1, TimeRange tr2) {return tr1.getStartTime().compareTo(tr2.getStartTime());}});// 3. 遍历时间段列表,判断相邻时间段是否有交叉boolean hasOverlap = false;BigDecimal prevStartTime = null;StringBuffer sb = new StringBuffer();for (TimeRange tr : timeRangeslist) {if (prevStartTime != null && (tr.getStartTime().compareTo(prevStartTime)==-1)) {hasOverlap = true;sb.append(tr.getStartTime() +"----");System.out.println(tr.getOrder());System.out.println(sb);}prevStartTime = tr.getEndTime();}// 4. 返回判断结果System.out.println("是否有时间交叉:" + hasOverlap);}}class TimeRange {private BigDecimal startTime;private BigDecimal endTime;private int order;public TimeRange(BigDecimal startTime, BigDecimal endTime,int order) {this.startTime = startTime;this.endTime = endTime;this.order = order;}public BigDecimal getStartTime() {return startTime;}public int getOrder() {return order;}public BigDecimal getEndTime() {return endTime;}
}

这篇关于java 校验排序是否有交叉的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/930557

相关文章

华为OD机试 - 会议室占用时间段(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷+C卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。 一、题目描述 现有若干个会议,所有会议共享一个会议室,用数组表示各个会议的开始时间和结束时间, 格式为: [[会议1开始时

Java里的管道输入流 PipedInputStream与管道输出流 PipedOutputStream

测试代码: import java.io.IOException;import java.io.PipedInputStream;import java.io.PipedOutputStream;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/*** @author* @

mysql select是否会锁表 ?

原文地址:http://www.bcty365.com/content-35-656-1.html 有的人说mysql的 select 会锁表 ,有的人说 mysql 的查询不会锁表 。 其他他们都对,没有 ,但是很片面。 其实对于mysql的select 是否会锁表 ,这个完全取决于表采用的是什么存储引擎。 这里我就拿大家最熟悉的存储引擎INNODB 和MYISAM 来说明这个问题。

基于SSM SpringBoot vue宾馆网上预订综合业务服务系统

基于SSM SpringBoot vue宾馆网上预订综合业务服务系统 系统功能 首页 图片轮播 宾馆信息 饮食美食 休闲娱乐 新闻资讯 论坛 留言板 登录注册 个人中心 后台管理 登录注册 个人中心 用户管理 客房登记管理 客房调整管理 休闲娱乐管理 类型信息管理 论坛管理 系统管理 新闻资讯管理 宾馆信息管理 房间预约管理 饮食美食管理 美食预定管理 开发环境和技术 开发语言:Jav

spring框架学习记录(1)

前半个月一直在应付期中考试,快被折磨似了orz 文章目录 SpringIoC(Inversion of Control) 控制反转与DI(Dependency Injection)依赖注入bean相关bean配置bean实例化bean的生命周期 依赖注入相关依赖注入方式依赖自动装配 容器创建容器获取bean Spring IoC(Inversion of Control) 控

4.3 JavaScript变量

4.3.1 变量的声明        JavaScript是一种弱类型的脚本语言,无论是数字、文本还是其他内容,统一使用关键词var加上变量名称进行声明,其中关键词var来源于英文单词variable(变量)的前三个字母。 可以在声明变量的同时对其指定初始值;也可以先声明变量,再另行赋值。例如: var x = 2;var msg = "Hello JavaScript!";var na

数据结构与算法之经典排序算法

一、简单排序 在我们的程序中,排序是非常常见的一种需求,提供一些数据元素,把这些数据元素按照一定的规则进行排序。比如查询一些订单按照订单的日期进行排序,再比如查询一些商品,按照商品的价格进行排序等等。所以,接下来我们要学习一些常见的排序算法。 1.1冒泡排序(Bubble Sort) 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 排序原理: 比较相邻的元素

面试题分享之Java集合篇(二)

注意:文章若有错误的地方,欢迎评论区里面指正 🍭  系列文章目录 面试题分享之Java基础篇(一)面试题分享之Java基础篇(二)面试题分享之Java基础篇(三) 面试题分享之Java集合篇(一) 文章目录 系列文章目录 前言 一、说一下HashMap的底层实现原理 二、HashMap 的长度为什么是 2 的幂次方? 三、说说HashMap的put方法执行流程

Android java与native层的调用机制

1. native动态库的加载 动态库的加载和卸载,是通过systemload, systemunload来实现的。 我们在调用systemload时,系统会自动到naitve so中查找 JNI_Onload方法,我们可以在这个方法中获取到javavm,并且加入私有的初始化。 JNI_OnUnload,执行下载操作。

GDPU JavaWeb 猜字母游戏

他在对你重定向打卡的大饼与立即跳转到你面前的谎言之间反复横跳。 sendRedirect与forward   sendRedirect与forward区别 sendRedirect用于将请求重定向到另一个资源,可以是同一个应用程序内的其他 Servlet,也可以是其他 Web 应用程序的资源,告诉浏览器发起一个新的请求,并在响应中返回一个新的 URL 地址。会产生两次请求,一次是原始