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);
    }

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据钻研

让你分分钟学会 javascript 闭包

闭包,是 javascript 中重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,你很难从定义去理解它。...

2744
来自专栏Python入门

十年Python大牛花了三天总结出来的python基础知识实例,超详细!

1773
来自专栏开发技术

排序之归并排序

  “归并”一词的中文含义就是合并、并入的意思,而在数据结构中的定义是将两个或两个以上的有序表组合成一个新的有序表。既然是归并、并入,那么必然就有子序列了,子序...

1194
来自专栏程序员互动联盟

【面试宝典】写一个函数将两个数交换

没有参加过面试的同学可能会很忐忑,面试都会出些什么题呢?其实一般情况下,大部分的面试题都是比较基础的。关于如何交换两个数字,应该是非常简单的问题了。看下面几个函...

3508
来自专栏Brian

Python 深浅拷贝

Python浅拷贝和深度拷贝 今天面试了一个计算机专业研究生且大学出身也很好,但是面试的结果来看并没有达到我的预期。很多基础计算机的知识貌似都不是很懂,更别说...

3938
来自专栏程序员互动联盟

【专业知识】 Webkit智能指针用法

历史: 在WebKit中,许多对象采用了引用计数。这种模式是通过类的ref,deref成员函数来递增和递减对象的引用记数。调用一次ref必须调用一次der...

35715
来自专栏PHP在线

php面试题(一)

1 <?php echo -10%3; ?> 答案:-1。 考查:优先级。 因为-的优先级比%求余的优先级低,也就是-(10%3)。 2 print (int...

3697
来自专栏企鹅号快讯

Python入门基础连载(1)数据类型

Python入门很简单,应该说语法还是很简单明了,有一定C或者java或者别的语言基础的亲们都能明白。大数据,机器学习大势所趋,乘着这风,大家一起学习Pytho...

1996
来自专栏信数据得永生

JavaScript 编程精解 中文第三版 三、函数

3277
来自专栏编程

Python入门基础连载(2)数据结构

Python数据结构包括了列表(list),元组(tuple),字典(dict)和集合(set),这些也都可以称之为容器,下面Cooldog就和大家一起学习一下...

2017

扫码关注云+社区

领取腾讯云代金券