Re: HashMap vs. TreeMap
Victor Grazi <[email protected]> Sun, 16 Dec 2007 12:07:28 -0500
| Newsgroups | gmane.comp.windows.devel.java.advanced |
|---|---|
| Message-ID | <[email protected]> |
and then there's ConcurrentHashMap which is purportedly faster than HashMap for even single threaded access. On 12/16/07, Randall R Schulz <[email protected]> wrote: > On Saturday 15 December 2007 23:04, Avinash Lakshman wrote: > > Hi All > > > > I need to store about a million key/value pairs. Which is more memory > > efficient HashMap or TreeMap? With the HashMap it looks like the > > resizing happens to be exponential but that is not the case with > > TreeMap i.e sometimes I may have 64,000 keys but the internal table > > allocated with the HashMap is at nearly double the value. I do not > > care about access times i.e I need a sparse HashMap. How can I > > acheive this? Can I think of the TreeMap as a poor man's sparse > > HashMap? Are there any other implementations I could look at? Please > > advice. > > Two things: > > 1) You should consider the Gnu Trove / Trove4J collections, especially > with very large hash tables. The implementation is much more > space-efficient (it does not use chaining, which wastes a lot of > memory; it also does not require wrapper objects.) Furthermore, the > API, while a drop-in, type-compatible with the standard collections > library, contains extra sets of classes for storing primitive types > directly (non-boxed). > > 2) If you know how big the table is going to be, you should allocate it > that big from the start and not rely on the automatic table growing > behavior that occurs when the table overflows (or, in the case chained > implementations, the chains get too long). > > > What is a "sparse" hash map? Trove4J's tables allow you control the > maximum load factor before the table is grown, but as I said, you > shouldn't allow that to happen if you don't have to. > > > <http://trove4j.sourceforge.net/> > > > > Thanks > > Avinash > > > Randall Schulz > > =================================== > This list is hosted by DevelopMentor(R) http://www.develop.com > > View archives and manage your subscription(s) at http://discuss.develop.com > =================================== This list is hosted by DevelopMentor® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com