jjzjj

java - 用状态/策略模式替换 if/else 逻辑

我已经阅读了之前关于用状态/策略模式替换Java中的条件逻辑(例如IF/ELSE)的堆栈交换,但我不确定我的案例是否适合替换。这里有耦合我看了-LonglistofifstatementsinJava和Convertingmany'ifelse'statementstoacleanerapproach我实际上是在编写一个文件下载管理器,这些是我的IF/ELSE结构:如果文件和它的zip文件存在,则将zip文件移动到zip文件目录并读入文件如果zip文件存在则解压文件并将zip文件移动到zip文件目录并读入文件如果zip文件不存在则从指定的URL下载它然后解压缩并读入文件并将zip文件移

java - ifPresent Stream 的 Else 方法

这个问题在这里已经有了答案:Ifnotnull-java8style(2个答案)关闭7年前。我想知道如果在过滤流后某些值不存在时如何执行某些行为。让我们假设代码:foo.stream().filter(p->p.someField==someValue).findFirst().ifPresent(p->{p.someField=anotherValue;someBoolean=true;});我如何放置某种类型的Else在ifPresent之后如果值不存在?有一些orElse我可以在findFirst之后调用的Stream上的方法,但我看不到用那些orElse来做到这一点的方法

糟糕的 if-else 或 switch 结构的 Java 替代方案

寻找现代方式来实现字符串转换以替换难看的if-else或switch结构:if("UK".equals(country))name="UnitedKingdom";if("GE".equals(country))name="Germany";if("FR".equals(country))name="France";if("IT".equals(country))name="Italy";[...]或switch(country){case"UK":name="UnitedKingdom";break;case"GE":name="Germany"break;case"FR":name

Java 嵌套的 if 语句与 if-else

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我不确定我应该更喜欢以下哪个代码片段。A)嵌套if(cond1!=null){if(cond2!=null){//Dothegoodstuffhere}else{System.out.println("Sorrycond2wasnull");}}else{System.out.println("Sorrycond1wasnull");}B)平坦if(cond1==null){System.

java - 太多的 if-else 语句,有什么方法可以重构它

这可以重构吗?或者这看起来不错。(变量名称已更改)if(cmpScope.equals(GLOBAL)){returntrue;}elseif((cmpScope.equals(X)||cmpScope.equals(Y))&&cid==pid){returntrue;}elseif(cmpScope.equals(Z)&&cid!=pId){returntrue;}elseif(cmpScope.equals(V)&&cid==pid){returntrue;}elseif(cmpScope.equals(Z)&&cid==pid&&cSubId!=pSubId){returntru

从ARM V7汇编层分析 if else和swith 语句效率

1.前言    ifelse和swithcase是两种常用的分支选择结构,从C语言的角度来看,代码是顺序执行的,很难判断两者的效率孰高孰低。可以确定的是,swith语句只能处理整形变量,而ifelse语句可以处理更复杂的条件分支。当条件变量为单一的整形值的判断时,两者是可以互相替代的,如:voidjudge_var_ifelse(intvar){ret=-1;if(0==var){ret=1;}elseif(1==var){ret=6;}elseif(2==var){ret=3;}else{ret=2;}returnret;}voidjudge_var_switch(intvar){ret=-

java - 查找多个列表中的元素数量并合并;删除 if/else 复杂?

我有一个列表列表:List>someList=newList>();列表的最大大小为五个字符串。就像下面这样:someList.get(0).size();//4elementssomeList.get(1).size();//1elementssomeList.get(2).size();//3elementssomeList.get(3).size();//1elements...我正在尝试设计一种方法,通过组合上述一些嵌套列表来创建特定大小(1-5个元素)的新列表。我可以做类似下面的事情(在这个例子中,三个元素):publicListgetThree(){for(intj=0;j

Java语句,处理优先级("dangling else")

给定以下有效代码:Booleana=false;if(a)System.out.println("A");elseSystem.out.println("!A");根据documentation,if包括它的条件和内部的statement也是一个statement。例如:if(b){System.out.println("B");}是一个语句。但是,当我们要用另一个语句替换现有语句时,它不应该触及整体逻辑,对吧?假设我们将(Expression)-statement替换为上面的if-statement:Booleana=false;Booleanb=false:if(a)if(b){S

java - Java 中许多 if-else 语句的性能不佳

我有一个方法可以使用32个if-else语句(想想真值表)来检查5个不同条件的所有组合。5个不同的字母代表方法,每个方法在字符串上运行自己的正则表达式,并返回一个boolean值,指示字符串是否与正则表达式匹配。例如:if(A,B,C,D,E){}elseif(A,B,C,D,!E){}elseif(A,B,C,!D,!E){}...etc,etc.但是,它确实影响了我的应用程序的性能(抱歉,我不能说太多细节)。谁能推荐一种更好的方法来处理这种逻辑?每个使用正则表达式的方法如下所示:Stringre1="regexhere";Patternp=Pattern.compile(re1,P

java - for 循环与 if-else 语句中的代码

我试图解决这个问题:https://leetcode.com/problems/longest-substring-without-repeating-characters/以下代码在44毫秒内通过了所有测试。for(inti=0;i=first){first=mp.get(s.charAt(i))+1;}mp.put(s.charAt(i),i);//max=Math.max(max,i-first+1);}max=Math.max(max,i-first+1);}但下面的代码只用了20毫秒就通过了所有测试。for(inti=0;i=first){first=mp.get(s.cha