Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #35721
| Path | csiph.com!aioe.org!.POSTED!not-for-mail |
|---|---|
| From | Arne Vajhøj <arne@vajhoej.dk> |
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Comparison structure? |
| Date | Tue, 4 Oct 2016 20:16:21 -0400 |
| Organization | Aioe.org NNTP Server |
| Lines | 81 |
| Message-ID | <nt1gom$thu$1@gioia.aioe.org> (permalink) |
| References | <59c17fe5-61a6-46dc-918f-ee5aa348e3fd@googlegroups.com> <vin7vbtorg7k171plq29ve3fo4fut237d5@4ax.com> <cfb773de-671a-46e7-9d79-e821780c7bcb@googlegroups.com> <nt109m$r82$1@dont-email.me> |
| NNTP-Posting-Host | PBuS014lhzVyHjLbXmo/ZQ.user.gioia.aioe.org |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=utf-8; format=flowed |
| Content-Transfer-Encoding | 7bit |
| X-Complaints-To | abuse@aioe.org |
| User-Agent | Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0 |
| X-Notice | Filtered by postfilter v. 0.8.2 |
| Xref | csiph.com comp.lang.java.programmer:35721 |
Show key headers only | View raw
On 10/4/2016 3:35 PM, Eric Sosman wrote:
> On 10/4/2016 1:29 PM, Eric Douglas wrote:
>> On Tuesday, October 4, 2016 at 12:53:51 PM UTC-4, Roedy Green wrote:
>>>> Is there a better structure?
>>> the only alternative I can think of is to use a compare method that
>>> returns +1 -1 0.
>>> Then you could use a switch.
>>
>> In that case you'd have to override the compareTo?
>> I read the doc on that method and it says returns a zero, or a value
>> less than or greater than zero. If it's not guaranteed to return
>> specific values for less than or greater than, what would be the
>> switch case?
>> This seems at least one reason people in the following thread suggest
>> sticking with the 3-way if.
>> http://stackoverflow.com/questions/18510360/how-to-use-greater-than-or-equal-in-a-switch-statement
>>
>>
>> Otherwise that code would be equivalent to
>> Integer compareMe = 1;
>> int compareTo = 2;
>> final int assignMe;
>> switch (compareMe.compareTo(compareTo)) {
>> case 0:
>> assignMe = 4;
>> break;
>> case 1:
>> assignMe = compareMe + 2;
>> break;
>> case -1:
>> assignMe = compareMe;
>> break;
>> }
>>
>> Of course Integer is final so you couldn't even just subclass it to
>> override compareTo. Without having 3 certain return values, this
>> method ends up uglier.
>
> You could use some static methods of Integer to eliminate
> the Integer object instances and fix the range problem:
>
> int compareMe = 1;
> int compareTo = 2;
> final int assignMe;
> switch(Integer.signum(Integer.compare(compareMe, compareTo))) {
> case 0:
> assignMe = 4;
> break;
> case 1:
> assignMe = compareMe + 2;
> break;
> default: // not "case -1:"
> assignMe = compareMe;
> break;
> }
>
> However, I'd be disinclined to call this an "improvement" over
> the original code.
Well - if one is competing in a code obfuscation contest then I will
suggest:
int compareMe = 1;
final int assignMe = cases[Integer.signum(compareMe - compareTo) +
1].option(compareMe, compareTo);
int compareTo = 2;
with:
@FunctionalInterface
private interface Case {
public int option(int compareMe, int compareTo);
}
private static Case[] cases = { (me,to) -> me, (me,to) -> 4, (me,to) ->
me + 2 };
:-)
Arne
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Comparison structure? Eric Douglas <e.d.programmer@gmail.com> - 2016-10-04 07:25 -0700
Re: Comparison structure? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-10-04 10:46 -0400
Re: Comparison structure? Roedy Green <inquiry@mindprod.com> - 2016-10-04 09:53 -0700
Re: Comparison structure? Eric Douglas <e.d.programmer@gmail.com> - 2016-10-04 10:29 -0700
Re: Comparison structure? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-10-04 15:35 -0400
Re: Comparison structure? Arne Vajhøj <arne@vajhoej.dk> - 2016-10-04 20:16 -0400
Re: Comparison structure? Arne Vajhøj <arne@vajhoej.dk> - 2016-10-04 22:29 -0400
Re: Comparison structure? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-10-05 08:08 -0400
Re: Comparison structure? Arne Vajhøj <arne@vajhoej.dk> - 2016-10-05 20:27 -0400
Re: Comparison structure? Martin Gregorie <martin@address-in-sig.invalid> - 2016-10-04 17:37 +0000
Re: Comparison structure? Eric Douglas <e.d.programmer@gmail.com> - 2016-10-04 12:02 -0700
Re: Comparison structure? j4n bur53 <janburse@fastmail.fm> - 2016-10-05 17:12 +0200
Re: Comparison structure? j4n bur53 <janburse@fastmail.fm> - 2016-10-05 17:14 +0200
Re: Comparison structure? Arne Vajhøj <arne@vajhoej.dk> - 2016-10-04 20:03 -0400
Re: Comparison structure? Marcel Mueller <news.5.maazl@spamgourmet.org> - 2016-10-05 22:41 +0200
csiph-web