草庐IT

which_case

全部标签

java - 不同switch case中的变量不能重名?

我正在重构一些代码以使其更易于阅读,但我遇到了一些我觉得很奇怪的事情,我想知道是否有人可以向我解释一下。原代码:if(tokensLeft==3){Stringid=tokens.nextToken();Stringvalue=tokens.nextToken();StringtrailerId=tokens.nextToken();rawListener.binaryInfo(id,Integer.parseInt(value),trailerId,this);}elseif(tokensLeft==2){Stringid=tokens.nextToken();Stringvalue

java - 循环增量 : Which is "better"?

当您有一个表示为数组的循环缓冲区,并且您需要环绕索引(即,当您达到可能的最高索引并递增它时),是否“更好”:return(++i==buffer.length)?0:i;或者return++i%buffer.length;使用模运算符有什么缺点吗?它比第一个解决方案的可读性差吗?编辑:当然应该是++i而不是i++,改了。编辑2:一个有趣的注意事项:我在DougLea的ArrayBlockingQueue实现中找到了第一行代码。 最佳答案 Update:OPhasadmittedinacommentthatitshouldhavebe

java - 设计模式 : avoid switch to decide which service call

对于一个项目,我们有一个Controller/Service/DAO架构。我们实现了对不同提供商API的调用,因此我们在每个Controller类中都得到了一些样板代码,如下所示:enum{PARTNER_A,PARTNER_B,PARTNER_C}publicclassMyController{@ResourcePartnerASearchServicepartnerASearchService;@ResourcePartnerBSearchServicepartnerBSearchService;@ResourcePartnerCSearchServicepartnerCSearc

java - 什么是 "Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains)"

我是Maven新手,尝试使用命令行创建Maven项目。当我从命令行运行mvnarchetype:generate所有流程完成后的第一件事是:Chooseanumberorapplyfilter(format:[groupId:]artifactId,casesensitivecontains)我知道我们可以通过按Enter跳过这些。但我真的很想知道这些线到底是什么?我用谷歌搜索,但没有给出明确而简单的答案。我的问题是:为什么以及如何选择一个数字,它与过滤器的关系如何(因为过滤器和数字在OR中)。我们可以跳过这些然后为什么它是由Maven给出的..为什么要特别显示这个数字630。当我们回

java - switch case 中的枚举引用

enumColor{RED,GREEN,BLUE};classSwitchEnum{publicstaticvoidmain(String[]args){Colorc=Color.GREEN;switch(c){caseRED:System.out.println("red");break;caseGREEN:System.out.println("green");break;caseBLUE:System.out.println("blue");break;}}}上面的代码可以很好地编译并给出预期的输出。我的问题是为什么在创建颜色引用“c”时我们需要通过枚举名称(即Color.GRE

java - 卡片布局 : How can I tell which card is visible?

我一直在查看Swing的文档CardLayout而且似乎没有任何方法可以确定当前正在向类(class)展示哪张卡片。但是必须有一种方法可以询问布局当前显示的是哪张卡片,对吧?由于项目限制,我不能简单地扩展它并将此功能添加到子类中,所以如果没有这样的功能是否意味着我无法跟踪组件外部的组件状态(哎呀!),或者在Swing的深处是否还有其他选择? 最佳答案 根据HowtoUseCardLayout教程,Conceptually,eachcomponentthataCardLayoutmanagesislikeaplayingcardort

java - 映射/数组列表 : which one is faster to search for an element

我有一个巨大的数据集,我必须将其存储到一个集合中,并且需要查找其中是否有任何重复项。数据量可能超过100万。我知道我可以将ArrayList中的更多元素存储到Map中。我的问题是:在Map中搜索键是否比在排序的ArrayList中搜索更快?在HashMap中搜索Key是否比TreeMap快?仅就存储n元素所需的空间而言,在TreeMap和HashMap实现之间哪个更有效? 最佳答案 1)是的。搜索ArrayList平均为O(n)。Map中键查找的性能取决于具体的实现。你可以写一个Map的实现那是O(n)或者更糟,但标准库中的所有实现

java - 如何让 switch case 在 Java 中接受多种数据类型?

虽然使用Javaswitchcase,它只接受char和int,但我想提供字符串case。如何做到这一点? 最佳答案 你不能在switch-case中有字符串(目前)。It'sonitswayinJava7.目前接受的类型包括char,byte,short,int,Character、Byte、Short、Integer或枚举类型。来自Java语言规范:ThetypeoftheExpressionmustbechar,byte,short,int,Character,Byte,Short,Integer,oranenumtype(§

java - QueryDsl - 带字符串值的 case 表达式

QueryDsl3.3.4hibernate3.6.10-Final我有两个实体:publicclassDocument{privateConfirmationconfirmation;}publicclassConfirmation{...}我需要这样的查询:SELECTcount(d.id),CASEWHENd.confirmation_idISNULLthen'NOT_CONFIRMED'else'CONFIRMED'ENDasconfirmedFROMdocumentdGROUPBYconfirmed;所以应该按照上面case表达式的结果进行分组。现在,将case部分转换为qu

java - 为什么,当我在 switch 语句中为每个枚举常量设置 case 时,我仍必须提供默认值?

这个问题在这里已经有了答案:Whyisdefaultrequiredforaswitchonanenum?(8个答案)关闭3年前。我试图在Java中声明一个枚举并在switch语句中使用该类型的变量,其中涵盖了该类型枚举常量的所有可能情况。enumMyEnum{FOO,BAR}privatestaticvoidtest(MyEnume){Stringmsg;switch(e){caseFOO:msg="foo";break;caseBAR:msg="bar";break;}System.out.println("Enumis:"+e+"msgis:"+msg);//compilerer