写业务代码的时候,我们经常要做条件判断,有的时候条件判断的或判断长达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);
} }