zoukankan      html  css  js  c++  java
  • 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);
        }
    
    }
  • 相关阅读:
    js数据结构Map -----字典
    配置一个高效快速的Git环境
    Ubuntu下dlib库编译安装
    空间域二阶统计纹理
    Markdown语法
    Notepad++中NppExec的使用之一:基本用法
    斯坦福大学机器学习笔记及代码(一)
    安家落户
    Android App开发常用专题开源代码
    Android基础-EditText键盘的显示与隐藏
  • 原文地址:https://www.cnblogs.com/intsmaze/p/8623508.html
Copyright © 2011-2022 走看看