Re: Java: Switch Or If Else

  • From: Dave <davidct1209@xxxxxxxxx>
  • To: programmingblind@xxxxxxxxxxxxx
  • Date: Wed, 23 Feb 2011 05:01:09 -0800

Or to avoid the use of goto's...use a hash between your key (string,
int, etc) and a delegate interface (in java), or a func ptr in C/C++.
Plenty of ways to do this.  This of course, means you have memory
overhead to consider.  The solution I think Sina suggested is writing
asm so that you use the input to switch(input) as a base + offset to
the case label.  (i.e. $pc + "input" would be the location of the case
label pertaining to "input").

Of course, this is all predicated on the assumption that you're
interested in a one to one mapping and not a mapping of ranges or some
other more complex boolean condition which James didn't assume btw.
(i.e. a >= 10 && a <= 20, foo->isNull() && baz->bar()); in which case,
if/else is still a good branching technique.

On 2/23/11, qubit <lauraeaves@xxxxxxxxx> wrote:
> Actually yes -- instead of the old fashioned integer cases on the C switch
> you can have a hash lookup on x that maps to a label to jump to.  Like in
> pseudo-C++ you would say
>
> Map<String,Label> jumpTable;
> ...
> l = jumpTable[x];
> if l is null, goto defaultLabel;
> else goto l;
>
> Or, if Map<String,Label> is defined so new entries are initialized with
> value = defaultLabel, then you wouldn't need the if statement at all.
> Just say
>
> goto jumpTable[x];
>
> Then the lookup on x will either find a match and would therefore have a
> label defined, or if x isn't in the table, the lookup operation would create
> a "null" entry with defaultLabel as its value.
>
> Hope this makes sense.  I have seen C++ programs that do a truely volumous
> amount of work with just 1 or 2 lines of code using libraries that do most
> the work in a (hopefully) efficient manner.
>
> Happy hacking.
> --le
>
> ----- Original Message -----
> From: "Homme, James" <james.homme@xxxxxxxxxxxx>
> To: <programmingblind@xxxxxxxxxxxxx>
> Sent: Wednesday, February 23, 2011 5:46 AM
> Subject: RE: Java: Switch Or If Else
>
>
> Hi,
> Python has code that looks something like this.
>
> If x in MyList:
>   do some stuff here.
>
> Is that the same thing?
>
> Thanks.
>
> Jim
>
> Jim Homme,
> Usability Services,
> Phone: 412-544-1810. Skype: jim.homme
> Internal recipients,  Read my accessibility blog. Discuss accessibility
> here. Accessibility Wiki: Breaking news and accessibility advice
>
>
> -----Original Message-----
> From: programmingblind-bounce@xxxxxxxxxxxxx
> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of qubit
> Sent: Tuesday, February 22, 2011 10:02 PM
> To: programmingblind@xxxxxxxxxxxxx
> Subject: Re: Java: Switch Or If Else
>
> another thing about switch statements for simple conditions like int or
> character literal values,  is that the compiler can do some tricky things to
> speed up the code -- for example, if you compare an int to values
> 1,2,3,...,100, and they all have code to execute, the compiler can do
> something like create a jump array and transform the switch to code like the
> following (pseudo code -- I don't know what java low level code looks like):
>
> jumpArray[100] = { label1, label2, label3, ... label100 };
> # the switch statement "switch (val) becomes:
> if x is in range, then goto jumpArray[x-1]
> else goto defaultLabel
>
> I remember seeing this kind of thing in the code I used to support.
> Of course that was a c/c++ compiler, but with java there might be similar
> optimizations.
> --le
>
> ----- Original Message -----
> From: "Dave" <davidct1209@xxxxxxxxx>
> To: <programmingblind@xxxxxxxxxxxxx>
> Sent: Tuesday, February 22, 2011 7:43 PM
> Subject: Re: Java: Switch Or If Else
>
>
> That's assuming you don't have complex conditions you're checking for;
> sometimes, if/else if is the only way to go.  When code becomes
> long/slightly unreadable, refactoring usually is a good idea.
>
> On 2/22/11, Homme, James <james.homme@xxxxxxxxxxxx> wrote:
>> Hi,
>> Thanks, guys. When I saw Ken's example, I liked the switch better.
>>
>> Jim
>>
>> Jim Homme,
>> Usability Services,
>> Phone: 412-544-1810. Skype: jim.homme
>> Internal recipients,  Read my accessibility
>> blog<http://mysites.highmark.com/personal/lidikki/Blog/default.aspx>.
>> Discuss accessibility
>> here<http://collaborate.highmark.com/COP/technical/accessibility/default.aspx>.
>> Accessibility Wiki: Breaking news and accessibility
>> advice<http://collaborate.highmark.com/COP/technical/accessibility/Accessibility%20Wiki/Forms/AllPages.aspx>
>>
>> From: programmingblind-bounce@xxxxxxxxxxxxx
>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Sina Bahram
>> Sent: Tuesday, February 22, 2011 1:02 PM
>> To: programmingblind@xxxxxxxxxxxxx
>> Subject: RE: Java: Switch Or If Else
>>
>> I can't agree more
>>
>> Switch is so superior to chains of if statements.
>>
>> Take care,
>> Sina
>>
>> From: programmingblind-bounce@xxxxxxxxxxxxx
>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Ken Perry
>> Sent: Tuesday, February 22, 2011 12:59 PM
>> To: programmingblind@xxxxxxxxxxxxx
>> Subject: RE: Java: Switch Or If Else
>>
>>
>>
>> I find switch much easier to use and read in large if else messes.  For
>> example in a multi level if else like this.
>>
>> If (){
>> If (){
>> If (){
>> }else{
>> }
>> }else{
>> }
>> }else{
>> If (){
>> If (){
>> }else{
>> }
>> }else{
>> }
>> }
>>
>>
>> Could look like this
>>
>> Switch ()
>> Case 1:
>> If (){
>> }else{
>> }
>> Case 2:
>> If (){
>> }Else{
>> }
>>
>>
>>
>> From: programmingblind-bounce@xxxxxxxxxxxxx
>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Homme, James
>> Sent: Tuesday, February 22, 2011 12:41 PM
>> To: programmingblind@xxxxxxxxxxxxx
>> Subject: Java: Switch Or If Else
>>
>> Hi,
>> Would there be a time when you would choose to use switch, and another
>> when
>> you would choose to use if else? For example, if doing it one way or the
>> other would make a program easier to read. When I was just thinking about
>> this, it seemed to me that if you would choose if else, you wouldn't have
>> to
>> keep remembering to put in break statements. For ease of reading, it would
>> seem that the code would take less time to listen to if you would choose
>> if
>> else.
>>
>> Thanks.
>>
>> Jim
>> Jim Homme,
>> Usability Services,
>> Phone: 412-544-1810. Skype: jim.homme
>> Internal recipients,  Read my accessibility
>> blog<http://mysites.highmark.com/personal/lidikki/Blog/default.aspx>.
>> Discuss accessibility
>> here<http://collaborate.highmark.com/COP/technical/accessibility/default.aspx>.
>> Accessibility Wiki: Breaking news and accessibility
>> advice<http://collaborate.highmark.com/COP/technical/accessibility/Accessibility%20Wiki/Forms/AllPages.aspx>
>>
>>
>> ________________________________
>> This e-mail and any attachments to it are confidential and are intended
>> solely for use of the individual or entity to whom they are addressed. If
>> you have received this e-mail in error, please notify the sender
>> immediately
>> and then delete it. If you are not the intended recipient, you must not
>> keep, use, disclose, copy or distribute this e-mail without the author's
>> prior permission. The views expressed in this e-mail message do not
>> necessarily represent the views of Highmark Inc., its subsidiaries, or
>> affiliates.
>>
> __________
> View the list's information and change your settings at
> //www.freelists.org/list/programmingblind
>
> __________
> View the list's information and change your settings at
> //www.freelists.org/list/programmingblind
>
> __________
> View the list's information and change your settings at
> //www.freelists.org/list/programmingblind
>
> __________
> View the list's information and change your settings at
> //www.freelists.org/list/programmingblind
>
>
__________
View the list's information and change your settings at 
//www.freelists.org/list/programmingblind

Other related posts: