当前位置: 首页 > 面试题库 >

java:条件很长,该怎么办?

宋朝
2023-03-14
问题内容

我需要有关在Java中应用条件的正确方法的建议。

我有100个条件,必须根据这些条件更改将显示给用户的String变量的值。

一个示例条件: a<5 && (b>0 && c>8) && d>9 || x!=4

存在更多条件,但变量或多或少相同。

我现在正在这样做:

    if(condition1)
    else if(condition2)
    else if(condition3)
    ...

开关案例的替代方案显然会嵌套在if-else的ie中

if(condition1)
 switch(x)
  {
   case y:
     blah-blah
   }        
else if(condition2)
switch(x)
  {
   case y:
     blah-blah
   }  
else if(condition3)
...

但是我正在寻找一些更优雅的解决方案,例如使用带有多态支持的Interface来实现这一目标,我应该做些什么来避免代码行或者应该是正确的方法。

  • -编辑 - -

我实际上在Android设备上需要此设置。但是,这里更多的是Java构造。

这是我遇到的情况的一个简短快照。如果几次通过/失败,将添加更多。显然,这将需要更多带/不带嵌套的if-else。在这种情况下,处理会变慢。

我现在将消息存储在一个单独的类中,该类具有我保持静态的各种字符串变量,因此,如果条件成立,则从唯一的类中选择静态变量并显示该变量。存储结果消息是否正确?


问题答案:

根据条件输入的数量,您可以HashMap通过将所有输入或什至是一些相对简单的复杂条件编码为一个值来使用查找表,甚至使用:

int key = 0;

key |= a?(1):0;
key |= b?(1<<1):0;
key |= (c.size() > 1)?(1<<2):0;
...

String result = table[key]; // Or result = map.get(key);

这种范例还具有恒定时间(O(1))复杂性的优点,这在某些情况下可能很重要。根据条件的复杂性,与全面的if-then-else意大利面条式代码相反,您甚至可能平均在代码路径中拥有更少的分支,这可能会导致性能提高。

如果您在问题中添加了更多内容,我们可能会为您提供更多帮助。条件输入来自哪里?他们像什么?



 类似资料:
  • Initial connection耗时间隔性很长 同接口同参数,Initial connection一次300ms左右,一次几乎没有。 环境是本地,有大佬知道怎么排查吗?

  • 问题内容: 当我尝试启动我们的Java服务器时,出现此错误:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver 但是我在脚本所在的文件夹中有mysql-connector-java-5.1.22-bin.jar,并在运行脚本时使用它: 但是仍然得到这个。该怎么办?我正在使用CentOS服务器。 问题答案: 在中的 MANIFEST.MF 文

  • java开发三年,不会JVM调优,想学一下,有点迷茫不知道方向

  • 问题内容: 我的网站几乎完成了,除了最后一部分,我需要使图库页面支持ajax才能使用Ajax更改页码。 图库页面视图: Dajax / Dajaxice的记录不是很好…我只需要显示一些图像即可。 问题答案: 这是使用Dajax / Dajaxice的方法,这是为了在Django中简化AJAX: 根据文档安装Dajaxice和Dajax。文档似乎没有提及它,但是您也可以使用,即 pip instal

  • ​ 预警列表上有开关按钮,可随时在APP设置开关,可同步至PC

  • ​ ​ ①点击条件详情即可编辑条件,如上图红框处 ​ ​ ②可编辑内容如上图,可编辑相关内容,也可删除该预警条件,删除按钮在右上角。 注意:如指标超限改为到期提醒的话,那图层下面需要有日期字段才可成功更改。