判断int是否为指定数值:两种写法是否属不良实践?
判断int变量是否属于1-6的写法对比
关于List.contains的写法
这种写法不算不良实践,但有几个细节要注意:
- 你代码里的List包含了0,但需求是判断1-6,得修正为
Arrays.asList(1,2,3,4,5,6)才符合要求 - 性能上:对于只有6个元素的小集合,contains的线性遍历开销完全可以忽略,不会影响实际运行
- 可读性与扩展性:后续要增减判断数值时,直接修改List的元素即可,比修改switch语句更便捷
- 仅在极端高频调用的热点代码中,它的性能才会略逊于switch,但绝大多数场景下差异可以无视
关于switch的写法
switch是Java中处理离散固定数值判断的常规写法:
- 性能:Java会对switch做优化(比如生成tableswitch指令),对于连续数值范围,效率很高
- 可读性:每个case对应明确的数值,逻辑清晰,但后续修改数值时需要逐个调整case,灵活性不如List写法
- 注意:你代码里每个case后都加了
break,但因为已经用return跳出方法了,break是冗余的,可以直接删掉简化代码
更简洁的替代写法
因为你要判断的是连续的1-6,其实最简洁高效的写法是直接用范围判断:
if (n >= 1 && n <= 6) { return; }
这种写法比List和switch都更直观,完全没必要用复杂的实现。
总结
- 若判断的是连续数值范围:优先用范围判断,简洁又高效
- 若判断的是离散不连续数值:两种写法都可行,追求扩展灵活性选List.contains,追求热点代码极致性能选switch
- 你提到的List写法绝非不良实践,只需注意集合元素与需求匹配即可
内容的提问来源于stack exchange,提问作者Woody
相关产品推荐
相关产品推荐

