首页 > 编程语言 >Java性能优化-if-else简化技巧

Java性能优化-if-else简化技巧

时间:2024-07-15 11:08:00浏览次数:18  
标签:typeId Java equals else 简化 Integer 优化 public

场景

Java性能优化-switch-case和if-else速度性能对比,到底谁快?:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/140376572

如果单纯是做情景选择,建议使用switch,如果必须使用if-else,过多的if-else会让人看着很难受,

可以使用如下几个小技巧来简化过多的if-else。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

实现

使用return去掉多余的else

优化前

        String a = "badao";
        if("badao".equals(a)){
            //业务代码
        }else{
            return;
        }

优化后

        if(!"badao".equals(a)){
            return;
        }

用Map数组把相关的判断信息定义为元素信息

优化前

        int type = 2;
        String typeName = "default";
        if(type ==1){
            typeName = "name1";
        }else if(type==2){
            typeName = "name2";
        }else if(type ==3){
            typeName = "name3";
        }

优化后

        Map<Integer,String> typeMap = new HashMap<>();
        typeMap.put(1,"name1");
        typeMap.put(2,"name2");
        typeMap.put(3,"name3");

        typeName = typeMap.get(type);

使用三元运算符

优化前

        Integer score = 82;
        String aa;
        if(score>80){
            aa = "A";
        }else{
            aa = "B";
        }

优化后

aa = score>80?"A":"B";

合并条件表达式

优化前

        String name = "badao";
        String city = "qingdao";
        if("qingdao".equals(city)){
            //执行业务逻辑1
        }
        if("badao".equals(name)){
            //执行业务逻辑1
        }

优化后

        if("qingdao".equals(city) || "badao".equals(name)){
            //执行业务逻辑1
        }

使用枚举

优化前

        Integer typeId = 0;
        String typeDesc = "Name";
        if("Name".equals(typeDesc)){
            typeId = 1;
        }else if("Address".equals(typeName)){
            typeId = 2;
        }else if("Age".equals(typeName)){
            typeId = 3;
        }

优化后

先定义一个枚举

    public enum TypeEnum{
        Name(1),Age(2),Address(3);
        public Integer typeId;
        TypeEnum(Integer typeId){
            this.typeId = typeId;
        }
    }

然后这样使用

Integer typeId1 = TypeEnum.valueOf("Name").typeId;

使用Optional省略非空判断

优化前

        String str = "badao";
        if(str!=null){
            System.out.println(str);
        }

优化后

        Optional<String> str1 = Optional.ofNullable(str);
        str1.ifPresent(System.out::println);

更多请参考

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/128458757

使用多态

优化前

        Integer typeId = 0;
        String typeDesc = "Name";
        if("Name".equals(typeDesc)){
            typeId = 1;
        }else if("Address".equals(typeName)){
            typeId = 2;
        }else if("Age".equals(typeName)){
            typeId = 3;
        }

优化后

新建接口类

public interface IType {
    Integer getType();
}

分别新建三个实现类

public class Name implements IType{
    @Override
    public Integer getType() {
        return 1;
    }
}

public class Age implements IType{
    @Override
    public Integer getType() {
        return 2;
    }
}

public class Address implements IType{
    @Override
    public Integer getType() {
        return 3;
    }
}

然后这样使用

        IType itype = (IType)Class.forName("com.demo."+typeDesc).newInstance();
        Integer type1 = itype.getType();

 

标签:typeId,Java,equals,else,简化,Integer,优化,public
From: https://www.cnblogs.com/badaoliumangqizhi/p/18302765

相关文章

  • java连接Oracle数据库
    第一步引用ojdbc.jar 详见https://www.cnblogs.com/hailexuexi/p/15062168.html注:项目代码换路径后要重新引用 注:编译项目时也要把ojdbc6.jar打到包里 完整的java代码OracleUtil.javapackagecom.JavaRabbitMQToDataBase.dbOracle;importjava.sql.Connectio......
  • 一文读懂Java线程池之线程复用原理
    什么是线程复用在Java中,我们正常创建线程执行任务,一般都是一条线程绑定一个Runnable执行任务。而Runnable实际只是一个普通接口,真正要执行,则还是利用了Thread类的run方法。这个rurn方法由native本地方法start0进行调用。我们看Thread类的run方法实现/*Whatwillberun.......
  • java 连接 oracle数据库时报错 Oracle JDBC驱动未找到! No suitable driver found for
    在用IDEA编写java连接Oracle时,报错:OracleJDBC驱动未找到!可这部分之前测试是好用。想来想去。哦,我把这个项目代码换过路径,问题就出在这。需要重新引用下  ojdbc6.jar架包 下面是java连接oracle的部分代码ClassNotFoundException可以捕获OracleJDBC驱动未找到的异......
  • Java案例秒杀活动
    目录一案例要求:二具体代码:三运行结果:一案例要求:二具体代码:packagetwo;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date;publicclasstest{publicstaticvoidmain(String[]args)throwsParseException{......
  • 使用Java实现WebSocket通信
    使用Java实现WebSocket通信大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来探讨如何使用Java实现WebSocket通信,WebSocket是一种在单个TCP连接上进行全双工通信的协议,非常适合实时数据传输。1.WebSocket简介WebSocket协议在Web开发中广泛应用,......
  • Java中的线程池详解
    Java中的线程池详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来深入探讨Java中的线程池。线程池是一种重要的多线程处理方式,能够有效管理和复用线程资源,提升系统的性能和稳定性。本文将详细介绍线程池的原理、使用方法以及在实际开发中的最......
  • 使用Java实现高并发编程
    使用Java实现高并发编程大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来讨论Java中的高并发编程。Java提供了丰富的并发编程工具和框架,包括线程、线程池、并发集合和锁机制等。本文将通过代码示例详细介绍如何使用这些工具实现高并发编程。1.......
  • Java中的动态代理机制详解
    Java中的动态代理机制详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Java中的动态代理机制。动态代理是Java语言中一种强大的特性,它允许我们在运行时创建代理类和对象,动态地处理对目标对象的方法调用。本文将详细介绍动态代理的原......
  • Java中的枚举类型详解
    Java中的枚举类型详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来深入探讨Java中的枚举类型。枚举类型在Java中是一种特殊的数据类型,它允许我们定义一组命名的常量,这些常量在整个程序中保持不变。本文将详细介绍枚举类型的定义、用法以及在......