Java实现连续上升、连续下降、高于一个值、低于一个值判断
一、前言
二、接口代码
package com.ovopark.service;
import java.math.BigDecimal;
import java.util.List;
public interface RuleModeService {
Boolean isAscending(List<BigDecimal> list);
Boolean isDescending(List<BigDecimal> list);
Boolean isHigher(Integer ruleRestrictions, List<BigDecimal> list);
Boolean isLess(Integer ruleRestrictions, List<BigDecimal> list);
}
三、实现类代码
package com.ovopark.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.comparator.CompareUtil;
import cn.hutool.core.convert.Convert;
import com.ovopark.service.RuleModeService;
import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;
import org.springframework.stereotype.Service;
@Service("ruleModeService")
public class RuleModeServiceImpl implements RuleModeService {
@Override
public Boolean isAscending(List<BigDecimal> list) {
if (CollectionUtil.isEmpty(list)) {
return false;
}
Boolean result = true;
BigDecimal prev = Convert.toBigDecimal(Double.MIN_VALUE);
for (BigDecimal number : list) {
if(CompareUtil.compare(number, prev) <= 0){
result = false;
break;
}
prev = number;
}
return result;
}
@Override
public Boolean isDescending(List<BigDecimal> list) {
if (CollectionUtil.isEmpty(list)) {
return false;
}
Boolean result = true;
BigDecimal prev = Convert.toBigDecimal(Double.MAX_VALUE);
for (BigDecimal number : list) {
if(CompareUtil.compare(number, prev) >= 0){
result = false;
break;
}
prev = number;
}
return result;
}
@Override
public Boolean isHigher(Integer ruleRestrictions, List<BigDecimal> list) {
if (Objects.isNull(ruleRestrictions) || CollectionUtil.isEmpty(list)) {
return false;
}
return CompareUtil.compare(list.stream().min(Comparable::compareTo).get(), Convert.toBigDecimal(ruleRestrictions)) > 0;
}
@Override
public Boolean isLess(Integer ruleRestrictions, List<BigDecimal> list) {
if (Objects.isNull(ruleRestrictions) || CollectionUtil.isEmpty(list)) {
return false;
}
return CompareUtil.compare(list.stream().max(Comparable::compareTo).get(), Convert.toBigDecimal(ruleRestrictions)) < 0;
}
}