Path: csiph.com!usenet.pasdenom.info!news.albasani.net!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Robert Klemme Newsgroups: comp.lang.java.programmer Subject: Re: Question about HashMap and Map.Entry ... Date: Fri, 31 Aug 2012 07:27:50 +0200 Lines: 35 Message-ID: References: <35O%r.171$_I7.84@newsfe20.iad> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Trace: individual.net KNDcIpAa+SOOpjuv0N3E8w3gRnxSJQX5DlseH5JZgzKcWxHnLRJBmgBhbr80Qg8Jk= Cancel-Lock: sha1:FNp2gzd1kOVAGFBZ4SZfdoEW218= User-Agent: Mozilla/5.0 (Windows NT 6.0; WOW64; rv:15.0) Gecko/20120824 Thunderbird/15.0 In-Reply-To: Xref: csiph.com comp.lang.java.programmer:18464 On 30.08.2012 23:55, Andreas Leitgeb wrote: > Daniel Pitts wrote: >> On 8/30/12 12:32 PM, Andreas Leitgeb wrote: >>> Damn, on re-read, I notice, that my own implementation of >>> Map.Entry could just hold a ref to the map and implement >>> setValue() to write the value back into the Map... >> Or, if you know all the keys before hand, you can use instead Map> MyLongWrapper> map. > > I know all the relevant keys before hand. I currently do > an initial map.put(k,0L) for each relevant "k". > >> MyLongWrapper would have .set() and .get(), or even .actUpon() >> depending on the semantics you need. > > Indeed, that is a more elegant approach, than mine. > Although it won't save me the extra containsKey(), as I'll > be also having "k"s that aren't in the map, containsKey() is unnecessary work. Just get(), and if it's null create a new MyLongWrapper. Btw, if you use long as member instead of Long then you do not even necessarily have more objects. containsKey() is only ever useful if you have null values in a Map or are just interested in the fact whether a key is present or not. Other than that just get() is more efficient even though effects might be negligible. Cheers robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/