Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #37072
| From | Sebastian <nowhere@nirvana.org> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: What's the best way to make a cross string set? |
| Date | 2017-08-06 18:13 +0200 |
| Organization | albasani.net |
| Message-ID | <om7f78$qnc$1@news.albasani.net> (permalink) |
| References | (16 earlier) <abafc97c-13c8-4934-9f55-0e0606c126c7@googlegroups.com> <om58cc$2bd$1@dont-email.me> <om59v8$41u$1@dont-email.me> <om5ct1$g6d$1@dont-email.me> <om5fqc$kv8$1@dont-email.me> |
Am 06.08.2017 um 00:11 schrieb Martin Gregorie:
> On Sat, 05 Aug 2017 17:25:44 -0400, Eric Sosman wrote:
>
>> It turns out that he's not trying to change the ordering
>> rule in mid-stream (at least, he didn't show any such attempt). Rather,
>> he's got an obfuscated way of implementing a two-part key: The first
>> part is this "style" number, and if the numbers agree the second is
>> either a String or an int (disguised as an Integer), depending on the
>> style.
>>
> OK, but thats a pretty poor way of implementing a two-part key, or an n-
> part key for that matter. Assuming that a is a more significant part than
> b, then the comparison should rather be something like this:
>
> int compareTo(Thing thing)
> {
> int r1 = a.compare-to(thing.geta());
> if (r1 != 0)
> return r1
> else
> return b.compareTo(thing.getb());
> }
>
> with the restriction that all multipart key elements must be accessable
> to getters or must not be protected or private: an not unreasonable
> restriction.
>
[mutability concerns snipped]
I think it would probably be better to pass explicit Comparators to the
TreeMap etc. here, instead of making Thing implement Comparator. With
Java's functional constructs (I wonder why they are so seldomly
mentioned in this newsgroup) you can easily separate key-definition and
comparison proper, which allows you to combine multiple "elementary"
comparators without having to reinvent the wheel (the cascading
comparison logic) each time. Like:
static Comparator<Thing> byStyle = Comparator.comparing(Thing::getStyle);
static Comparator<Thing> bySomeValue =
Comparator.comparing(Thing::getStyleDependentSortKey);
... perhaps more
static Comparator<Thing> multiKey = byStyle.thenComparing(bySomeValue);
-- Sebastian
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
What's the best way to make a cross string set? Eric Douglas <e.d.programmer@gmail.com> - 2017-07-27 12:12 -0700
Re: What's the best way to make a cross string set? Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2017-07-27 14:38 -0500
Re: What's the best way to make a cross string set? Eric Douglas <e.d.programmer@gmail.com> - 2017-07-27 12:49 -0700
Re: What's the best way to make a cross string set? Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-07-27 15:49 -0400
Re: What's the best way to make a cross string set? Eric Douglas <e.d.programmer@gmail.com> - 2017-07-27 12:55 -0700
Re: What's the best way to make a cross string set? Eric Douglas <e.d.programmer@gmail.com> - 2017-07-27 13:22 -0700
Re: What's the best way to make a cross string set? Eric Douglas <e.d.programmer@gmail.com> - 2017-07-27 13:30 -0700
Re: What's the best way to make a cross string set? Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2017-07-27 15:34 -0500
Re: What's the best way to make a cross string set? Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-07-27 18:27 -0400
Re: What's the best way to make a cross string set? lewbloch@gmail.com - 2017-07-28 18:51 -0700
Re: What's the best way to make a cross string set? v_borchert@despammed.com (Volker Borchert) - 2017-07-29 06:03 +0000
Re: What's the best way to make a cross string set? v_borchert@despammed.com (Volker Borchert) - 2017-07-28 18:19 +0000
Re: What's the best way to make a cross string set? Eric Douglas <e.d.programmer@gmail.com> - 2017-07-28 13:28 -0700
Re: What's the best way to make a cross string set? Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-07-28 17:20 -0400
Re: What's the best way to make a cross string set? Eric Douglas <e.d.programmer@gmail.com> - 2017-07-31 05:24 -0700
Re: What's the best way to make a cross string set? Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-07-31 12:01 -0400
Re: What's the best way to make a cross string set? Eric Douglas <e.d.programmer@gmail.com> - 2017-07-31 10:58 -0700
Re: What's the best way to make a cross string set? Sebastian <nowhere@nirvana.org> - 2017-07-31 18:13 +0200
Re: What's the best way to make a cross string set? lewbloch@gmail.com - 2017-07-31 09:24 -0700
Re: What's the best way to make a cross string set? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-31 19:24 -0400
Re: What's the best way to make a cross string set? Eric Douglas <e.d.programmer@gmail.com> - 2017-08-01 06:36 -0700
Re: What's the best way to make a cross string set? Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-08-01 10:58 -0400
Re: What's the best way to make a cross string set? Eric Douglas <e.d.programmer@gmail.com> - 2017-08-01 08:09 -0700
Re: What's the best way to make a cross string set? lewbloch@gmail.com - 2017-08-01 09:39 -0700
Re: What's the best way to make a cross string set? Eric Douglas <e.d.programmer@gmail.com> - 2017-08-01 10:18 -0700
Re: What's the best way to make a cross string set? Andreas Leitgeb <avl@logic.at> - 2017-08-02 09:22 +0000
Re: What's the best way to make a cross string set? Eric Douglas <e.d.programmer@gmail.com> - 2017-08-02 05:13 -0700
Re: What's the best way to make a cross string set? Andreas Leitgeb <avl@logic.at> - 2017-08-03 14:33 +0000
Re: What's the best way to make a cross string set? Eric Douglas <e.d.programmer@gmail.com> - 2017-08-03 08:51 -0700
Re: What's the best way to make a cross string set? Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-08-03 12:20 -0400
Re: What's the best way to make a cross string set? Eric Douglas <e.d.programmer@gmail.com> - 2017-08-03 10:15 -0700
Re: What's the best way to make a cross string set? Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-08-03 13:42 -0400
Re: What's the best way to make a cross string set? Eric Douglas <e.d.programmer@gmail.com> - 2017-08-03 11:17 -0700
Re: What's the best way to make a cross string set? Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-08-05 16:08 -0400
Re: What's the best way to make a cross string set? Martin Gregorie <martin@address-in-sig.invalid> - 2017-08-05 20:31 +0000
Re: What's the best way to make a cross string set? Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-08-05 17:25 -0400
Re: What's the best way to make a cross string set? Martin Gregorie <martin@address-in-sig.invalid> - 2017-08-05 22:11 +0000
Re: What's the best way to make a cross string set? Sebastian <nowhere@nirvana.org> - 2017-08-06 18:13 +0200
Re: What's the best way to make a cross string set? Eric Douglas <e.d.programmer@gmail.com> - 2017-08-02 12:56 -0700
Re: What's the best way to make a cross string set? Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-07-29 16:55 -0400
Re: What's the best way to make a cross string set? Sebastian <nowhere@nirvana.org> - 2017-07-29 23:56 +0200
csiph-web