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

场景

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

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

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

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

注:

博客:
霸道流氓气质-CSDN博客

实现

使用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);

更多请参考

Java8中Optional类入门-替代null避免冗杂的非空校验_optional<object>-CSDN博客

使用多态

优化前

        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{@Overridepublic Integer getType() {return 1;}
}public class Age implements IType{@Overridepublic Integer getType() {return 2;}
}public class Address implements IType{@Overridepublic Integer getType() {return 3;}
}

然后这样使用

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于java的反射

❓❓❓反射是啥呀相信许多学java的同学非常困惑在学的时候&#xff0c;总是感觉懂了却又没懂或者直接忽略过去了&#xff0c;那么本文就带大家探讨一下什么是反射在java中以及它的机制和运用。 ⭐️什么是反射&#xff1a; 首先我们知道一些知识&#xff1a; 维基百科的解释 …

武汉市集成电路领域重点产业链研究咨询服务机构申报条件、时间

武汉市集成电路领域重点产业链研究咨询服务机构公开遴选有关内容如下&#xff0c;武汉市的企业单位可以了解一下 一、采购内容 &#xff08;一&#xff09;项目名称 武汉市集成电路领域重点产业链研究咨询服务项目。 &#xff08;二&#xff09;项目内容 为进一步推动我市…

springboot项目 导入 maven坐标 错误 Could not transfer artifact XXX

1.报错原因 当时导入的是 redis坐标 &#xff0c;导入jar 包报错&#xff08;当时是网速太慢了&#xff0c;一直卡着不动 就关了 idea 重新下载&#xff09;结果报错 之前的redis 项目都可以的&#xff0c;网上找了一下 都没解决 2.解决办法 既然说不能传输&#xff0c; 就说…

有用的工具

一、appuploader Appuploader home -- A tool improve ios develop efficiency such as submit ipa to appstore and manage ios certificate这是一款p12证书查看的工具&#xff0c; 需要建立一个apple ID专用密码&#xff1a;Manage your Apple ID

redis其他类型和配置文件

很多博客只讲了五大基本类型&#xff0c;确实&#xff0c;是最常用的&#xff0c;而且百分之九十的程序员对于Redis只限于了解String这种最常用的。但是我个人认为&#xff0c;既然Redis官方提供了其他的数据类型&#xff0c;肯定是有相应的考量的&#xff0c;在某些特殊的业务…

C++相关概念和易错语法(22)(final、纯虚函数、继承多态难点)

1.final final在继承和多态中都可以使用&#xff0c;在继承中是指不想将自己被继承&#xff0c;在多态中是指不想该函数被重写&#xff0c;比较简单&#xff0c;下面是一些使用例子。 2.纯虚函数 当我们需要抽象一个类的时候&#xff0c;我们就需要用到纯虚函数。所谓抽象的类…

C# 4.0 等待线程结束

在C#中&#xff0c;如果你正在使用多线程编程&#xff0c;并且想要等待一个或多个线程完成它们的工作再继续执行&#xff0c;有几种方式可以实现。从C# 4.0开始&#xff0c;虽然直接用于等待线程结束的特性&#xff08;如Thread.Join()&#xff09;在之前的版本中也已经存在&am…

升级版凯撒密码加密解密器

目录 开头程序程序的流程图程序加密与解密的效果例1加密的过程加密之后的文本 例2解密之后的文本解密之后的文本 例3加密之后的文本加密之后的文本 结尾 开头 大家好&#xff0c;我叫这是我58。今天&#xff0c;我们来看一下我用C语言编译的升级版凯撒密码加密解密器和与之相关…

小程序 - - - - - 实现渐隐渐显(监听滚动距离版)

代码如下&#xff1a; <!-- fixed-left --> <view class"fixed-box" animation"{{animationData}}">这里是渐隐渐显的标签 </view>.fixed-box {position: fixed;left: 0;top: 0;z-index: 999;background-color: #ccc;/* background-colo…

如何设计统计量及相关假设检验

一、如何设置H0和H1假设 谁做H0&#xff0c;谁做H1&#xff0c;在统计学的假设检验里是有约定俗成的规定的。即&#xff1a;status quo&#xff08;默认/现状&#xff09;是H0&#xff0c;而新观点或试图challenge现状的是H1。H1也叫research hypothesis&#xff0c;所以我们做…

【多个Python版本存在,使用pip+不同版本安装库时,windows弹出打开方式窗口的解决方法】

问题描述 电脑上存在python3.9&#xff0c;3.10&#xff0c;3.11&#xff0c;安装顺序也是先安装3.9&#xff0c;然后3.10&#xff0c;最后3.11&#xff0c;那么直接使用pip安装&#xff0c;会装在3.11的位置&#xff0c;经过搜索可以通过pip版本&#xff0c;比如pip3.9 insta…

1.3- Zygote

第三节 Zygote 在Android系统中&#xff0c;Zygote是一个非常核心的组件&#xff0c;它扮演着孵化新应用程序进程的角色。Zygote是Android启动过程中创建的第一个Java虚拟机&#xff08;JVM&#xff09;实例&#xff08;在Android中称为Dalvik或ART虚拟机&#xff0c;取决于An…

如何在勒索软件攻击中幸存下来:最佳备份实践、勒索拦截方案

无论身处什么业务或行业&#xff0c;数据都是您业务的关键资产。没有针对数据进行安全可靠的备份保护&#xff0c;您将会受到许多“可能性”的威胁&#xff0c;无论数据丢失是由于在键盘上洒了饮料还是遭受到了勒索软件的攻击。 为了确保业务不被中断&#xff0c;企业数据不会…

Python: 初识Python

文章目录 1. Python的背景知识1.1 Python是咋来的?1.2 Python的特点1.3 Python能干啥?1.4 Python的缺点 2. 搭建Python环境2.1 安装Python2.2 安装PyCharm2.3 用pycharm编写python程序 1. Python的背景知识 1.1 Python是咋来的? 由Guido van Rossum于1989年圣诞节为打发无…

一个用于管理多个 Node.js 版本的安装和切换开源工具

大家好&#xff0c;今天给大家分享一个用于管理多个Node.js版本的工具 NVM&#xff08;Node Version Manager&#xff09;&#xff0c;它允许开发者在同一台机器上安装和使用不同版本的Node.js&#xff0c;解决了版本兼容性问题&#xff0c;为开发者提供了极大的便利。 在开发环…

路网双线合并单线——ArcGISpro 解决方法

路网双线合并成单线是一个在地图制作、交通规划以及GIS分析中常见的需求。双线路网定义&#xff1a;具有不同流向、不同平面结构的道路。此外&#xff0c;车道数较多的道路&#xff08;例如&#xff0c;双黄实线车道数大于4的道路&#xff09;也可以视为双线路网&#xff0c;本…

iPhone 如何修改锁屏密码?修改密码的具体步骤总结

修改 iPhone 锁屏密码 当你还记得当前设置的锁屏密码时&#xff0c;想要修改密码就非常的简单了&#xff0c;只需要简单的点几下就可以重新设置新密码&#xff0c;下面是具体的操作步骤&#xff1a; 首先我们进入设置应用程序&#xff0c;然后找到“面容 ID 与密码”。 然后需…

python3多进程用途和场景

Python3 的多进程模块 multiprocessing 提供了多种用于并行处理的功能&#xff0c;适用于各种场景。以下是一些常见的用途和场景&#xff1a; 用途 CPU 密集型任务&#xff1a; 多进程适用于需要大量 CPU 计算的任务&#xff0c;例如数值计算、数据处理、图像处理等。这些任务…

Redis的中BitMap的应用

一、应用场景 通常用于构建布隆过滤器 业务场景需要频繁的查询数据库里的数据&#xff0c;但是这些数据又不一定都存在&#xff0c;一些大量无效的数据库请求&#xff0c;占用了数据库的链接。 本质上保护数据库&#xff0c;减少无用的请求。 解决&#xff1a; 1、把查询的…

(01)Unity使用在线AI大模型(使用百度千帆服务)

目录 一、概要 二、环境说明 三、申请百度千帆Key 四、使用千帆大模型 四、给大模型套壳 一、概要 在Unity中使用在线大模型分为两篇发布&#xff0c;此篇文档为在Python中使用千帆大模型&#xff0c;整体实现逻辑是&#xff1a;在Python中接入大模型—>发布为可传参的…