java或判断优化小技巧

写业务代码的时候,我们经常要做条件判断,有的时候条件判断的或判断长达20多个。reg.equals("1") || reg.equals("2") || reg.equals("3")||.....是不是很奔溃

1,这个时候代码维护不好维护,字段一多对字段就会出错。

2,在最差情况下,执行语句要对这20个判断都判断一下才知道最终的结果,在高性能业务下发挥并不好。

这个时候我们可以用map或set来进行判断,因为hashmap是一个hash桶,查找的效率是比较快的,不管判断任何值他的查询效率基本稳定。

当然最好指定hashmap的长度和判断的元素一样多,这样就避免对某一个桶内衍生出链表了。

例子如下,大家可以试一试。

/** * @author:YangLiu * @date:2018年3月22日 上午10:06:25 * @describe: */ public class ifMap { public static Map<String, String> ISJACARD = new HashMap<String, String>(20) { { put("1", ""); put("2", ""); put("3", ""); put("4", ""); put("5", ""); put("6", ""); put("7", ""); put("8", ""); put("9", ""); put("11", ""); put("12", ""); put("13", ""); put("14", ""); put("15", ""); put("16", ""); put("17", ""); put("18", ""); put("19", ""); put("21", ""); put("22", ""); put("23", ""); put("24", ""); put("25", ""); put("26", ""); put("27", ""); put("28", ""); put("29", ""); } }; public static void main(String[] args) { String reg = "13"; long start = System.currentTimeMillis(); for (int i = 0; i < 100000000; i++) { if (reg.equals("1") || reg.equals("2") || reg.equals("3") || reg.equals("4") || reg.equals("5") || reg.equals("6") || reg.equals("7") || reg.equals("8") || reg.equals("9") || reg.equals("19") || reg.equals("18") || reg.equals("17") || reg.equals("16") || reg.equals("15") || reg.equals("14") || reg.equals("13") || reg.equals("12") || reg.equals("11")) { } } System.out.println(System.currentTimeMillis() - start); start = System.currentTimeMillis(); for (int i = 0; i < 100000000; i++) { if (ISJACARD.containsKey(reg)) { } } System.out.println(System.currentTimeMillis() - start); } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwwdxj.html