Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #38533
| From | Eric Sosman <esosman@comcast-dot-net.invalid> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Is there a better way to group and sort objects? |
| Date | 2018-08-08 07:45 -0400 |
| Organization | A noiseless patient Spider |
| Message-ID | <pkel4d$re6$1@dont-email.me> (permalink) |
| References | <8c045ff4-98c5-4253-9136-b26b34cf8f77@googlegroups.com> <pke94a$j46$1@news.albasani.net> <pkeib2$9pv$1@dont-email.me> <pkejoq$ksf$1@news.albasani.net> |
On 8/8/2018 7:22 AM, Martin Gregorie wrote:
> On Wed, 08 Aug 2018 06:57:33 -0400, Eric Sosman wrote:
>
>> On 8/8/2018 4:20 AM, Martin Gregorie wrote:
>>> On Tue, 07 Aug 2018 06:00:19 -0700, Eric Douglas wrote:
>>>
>>>> I want to combine and sort objects by key properties and merge their
>>>> secondary properties. Is there a better way? This is what I came up
>>>> with..
>>>>
>>> Given your ..and sort... requirement, I'd use a TreeMap rather than a
>>> HashMap because storing items in key sequence is implicit. In addition,
>>> its search efficiency rises as the tree gets bigger; if the treemap
>>> contains 2**23 entries a worst case search only does 23 key
>>> comparisons.
>>
>> ... except that he sorts on a field of the mapped values,
>> not on the map keys. Specifically, if he has two instances with `var1'
>> values of 2 and 10 they will sort in that order, but their map keys will
>> sort in the order "10" followed by "2".
>
> Another thought, seeing that Eric wants to use an integer key, why not
> store the key value in an Integer, which is already Comparable, rather
> than making the class containing the int key Comparable?
>
> This is effectively what I do when manipulating a TreeMap of objects with
> String values as keys. A scan of the class definitions shows that the
> same idea should work for a HashMap.
As an extreme case, he might use the object itself as both the
key and value in a Map<TestClass,TestClass>. I sometimes find this
a useful substitute for a Set<TestClass>, because the Set will tell
me whether an equal item is or isn't present, but will not deliver
the pre-existing item.
If he were to do this, though, it would be a *very* good idea to
make his `var1' field `final'. (As things stand it's not required,
but even so: Massive confusion would ensue were it to change.)
To a related matter, I'm not convinced TreeMap is more efficient
than HashMap-and-sort-afterwards in a situation where the ordering is
needed only after all items have been added. If anything, I'd imagine
TreeMap would be somewhat less efficient because it expends effort in
keeping itself "always sorted" even while the order is unimportant:
it carefully computes {3} and {1,3} and {1,2,3} and ... {1,2,3,...,N}
even though only the last of these results is required. I'd save
TreeMap for occasions when the intermediate orderings are to be used
or when "closest match" (as opposed to "present/absent") searches are
needed.
--
esosman@comcast-dot-net.invalid
Eight hundred ninety-six days to go.
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Is there a better way to group and sort objects? Eric Douglas <e.d.programmer@gmail.com> - 2018-08-07 06:00 -0700
Re: Is there a better way to group and sort objects? Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-08-07 09:44 -0400
Re: Is there a better way to group and sort objects? Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-08-07 11:33 -0400
Re: Is there a better way to group and sort objects? Eric Douglas <e.d.programmer@gmail.com> - 2018-08-07 10:22 -0700
Re: Is there a better way to group and sort objects? Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-08-07 14:16 -0400
Re: Is there a better way to group and sort objects? Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-08-07 14:36 -0400
Re: Is there a better way to group and sort objects? Eric Douglas <e.d.programmer@gmail.com> - 2018-08-07 12:13 -0700
Re: Is there a better way to group and sort objects? Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-08-07 16:00 -0400
Re: Is there a better way to group and sort objects? Martin Gregorie <martin@mydomain.invalid> - 2018-08-08 08:20 +0000
Re: Is there a better way to group and sort objects? Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-08-08 06:57 -0400
Re: Is there a better way to group and sort objects? Martin Gregorie <martin@mydomain.invalid> - 2018-08-08 11:08 +0000
Re: Is there a better way to group and sort objects? Martin Gregorie <martin@mydomain.invalid> - 2018-08-08 11:22 +0000
Re: Is there a better way to group and sort objects? Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-08-08 07:45 -0400
Re: Is there a better way to group and sort objects? Martin Gregorie <martin@mydomain.invalid> - 2018-08-08 14:12 +0000
Re: Is there a better way to group and sort objects? Eric Douglas <e.d.programmer@gmail.com> - 2018-08-08 05:50 -0700
Re: Is there a better way to group and sort objects? Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-08-08 09:23 -0400
Re: Is there a better way to group and sort objects? Eric Douglas <e.d.programmer@gmail.com> - 2018-08-08 06:47 -0700
Re: Is there a better way to group and sort objects? Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-08-08 10:31 -0400
Re: Is there a better way to group and sort objects? Eric Douglas <e.d.programmer@gmail.com> - 2018-08-08 08:24 -0700
Re: Is there a better way to group and sort objects? Robert Klemme <shortcutter@googlemail.com> - 2018-08-14 14:06 +0200
Re: Is there a better way to group and sort objects? Eric Douglas <e.d.programmer@gmail.com> - 2018-08-14 05:49 -0700
Re: Is there a better way to group and sort objects? Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2018-08-09 16:06 +0200
Re: Is there a better way to group and sort objects? Eric Douglas <e.d.programmer@gmail.com> - 2018-08-14 05:47 -0700
csiph-web