java 区间重叠判断
Posted 豆豆323
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 区间重叠判断相关的知识,希望对你有一定的参考价值。
百度后看了一些解法,效率虽可能比较高,但相对代码太复杂,不便于阅读与代码交接,自己写了下,方法如下。
方法一:
private void checkOverlap(LinkedList<ActiveExtendDTO> activeExtendDOList) { activeExtendDOList.sort(Comparator.comparing(ActiveExtendDTO::getCommodityMinNum)); Long temp = activeExtendDOList.poll().getCommodityMaxNum(); for (ActiveExtendDTO activeExtend : activeExtendDOList) { if (temp >= activeExtend.getCommodityMinNum()) { throw new Exception("区间有重叠"); } temp = activeExtend.getCommodityMaxNum(); } }
方法二(1.8):
private void checkOverlap2(List<ActiveExtendDTO> list) { list.stream().sorted(Comparator.comparing(ActiveExtendDTO::getCommodityMinNum)) .reduce((a, b) -> { if (a.getCommodityMaxNum() >= b.getCommodityMinNum()) { throw new Exception("区间有重叠"); } return b; }); }
附ActiveExtendDTO类:
@Data public class ActiveExtendDTO { @ApiModelProperty(value = "最小数量") @NotBlank(message = "最小数量不可为空") private Long commodityMinNum; @ApiModelProperty(value = "最大数量") @NotBlank(message = "最大数量不可为空") private Long commodityMaxNum; }
以上是关于java 区间重叠判断的主要内容,如果未能解决你的问题,请参考以下文章
perf 对两个map是否重叠的判断,以及函数map_groups__fixup_overlappings代码逻辑