Java如何高效判断数值为整百值 替代蛮力枚举校验无效州际公路编号
优化实现方案
方案1:取模+范围判断(规则统一场景首选)
整百数的核心特征是对100取余结果为0,配合数值范围限制即可完全替代枚举写法,时间复杂度为O(1),后续要扩大校验范围只要修改上下限参数即可:
// 示例:校验100~900区间的整百数,如需支持更大范围,直接修改900为目标上限即可 else if (input1 > 0 && input1 % 100 == 0 && input1 >= 100 && input1 <= 900) {
如果没有上限要求,直接删除&& input1 <= 900的条件即可。
方案2:预定义集合校验(规则灵活场景首选)
如果存在部分整百数无效、没有统一数学规则的情况,可以提前把所有有效整百值存入不可变Set集合,后续调整有效值只要修改集合的初始化代码即可,校验逻辑无需变动:
// 类全局预定义有效整百编号集合,仅初始化一次 private static final Set<Integer> VALID_100_MULTIPLE_INTERSTATES = Set.of( 100, 200, 300, 400, 500, 600, 700, 800, 900 ); // 校验逻辑 else if (VALID_100_MULTIPLE_INTERSTATES.contains(input1)) {
方案选型参考
- 取模方案:代码简洁无额外内存开销、性能最高,适合有效整百数符合统一范围规则的场景
- 集合方案:灵活性更强,支持自定义任意有效数值,适合规则特殊、需要频繁调整有效值的场景
内容的提问来源于stack exchange,提问作者bojekyll
相关产品推荐
相关产品推荐

