Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #11351

Re: exporting a HashMap

Path csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!eternal-september.org!feeder.eternal-september.org!mx04.eternal-september.org!.POSTED!not-for-mail
From Eric Sosman <esosman@ieee-dot-org.invalid>
Newsgroups comp.lang.java.programmer
Subject Re: exporting a HashMap
Date Sun, 15 Jan 2012 12:01:55 -0500
Organization A noiseless patient Spider
Lines 39
Message-ID <jev0q9$aoo$1@dont-email.me> (permalink)
References <ljv5h7pl5t57ikpoqntvu1iif4tkrl9l7t@4ax.com>
Mime-Version 1.0
Content-Type text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding 7bit
Injection-Date Sun, 15 Jan 2012 17:02:01 +0000 (UTC)
Injection-Info mx04.eternal-september.org; posting-host="HSlJAUb3pGXi3i7ZL/HoAw"; logging-data="11032"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19X6e2kqN5Hyrjz/YGFwcxL"
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:9.0) Gecko/20111222 Thunderbird/9.0.1
In-Reply-To <ljv5h7pl5t57ikpoqntvu1iif4tkrl9l7t@4ax.com>
Cancel-Lock sha1:BFa0oaLhhU4y//N7S0XrOWTZZyw=
Xref x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:11351

Show key headers only | View raw


On 1/15/2012 11:30 AM, Roedy Green wrote:
> What is best code to export key-value pairs from a HashMap into some
> structure in key-value order.
>
> One possible way is to extract the keys, sort them, then look up the
> values.  That strikes me as infantile.  Surely there is a better way.
>
> The best I can think of is to invent a Pair dummy class, extract the
> fields from an Entry into the two fields, and sort them in an array.
>
> Part of the problem is generics and arrays don't mix.

     Why invent a Pair when Map.Entry already holds the data?  Just
typed in, unchecked:

	Map<K,V> map = ...;
	List<Map.Entry<K,V>> entries =
	    new ArrayList<Map.Entry<K,V>>(map.entrySet());
	Collections.sort(entries, new Comparator<Map.Entry<K,V>>() {
	    @Override
	    public int compare(Map.Entry<K,V> e1, Map.Entry<K,V> e2) {
	        return e1.getKey().compareTo(e2.getKey());
	    }
	});
	for (Map.Entry<K,V> e : entries) { ... }

There's scary Javadoc about the longevity of Map.Entry, but as long
as the underlying Map isn't changed all should be well.

     Another approach is to use a SortedMap, either ab initio or as
a substitute for the List-and-sort above:

	Map<K,V> map = ...;
	SortedMap<K,V> map2 = new TreeMap<K,V>(map);
	for (Map.Entry<K,V> e : map2.entrySet()) { ... }

-- 
Eric Sosman
esosman@ieee-dot-org.invalid

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

exporting a HashMap Roedy Green <see_website@mindprod.com.invalid> - 2012-01-15 08:30 -0800
  Re: exporting a HashMap Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-01-15 12:01 -0500
    Re: exporting a HashMap Roedy Green <see_website@mindprod.com.invalid> - 2012-01-16 02:06 -0800
    Re: exporting a HashMap Roedy Green <see_website@mindprod.com.invalid> - 2012-01-17 09:04 -0800
      Re: exporting a HashMap Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-01-17 20:38 -0500
  Re: exporting a HashMap Arne Vajhøj <arne@vajhoej.dk> - 2012-01-15 12:25 -0500
    Re: exporting a HashMap Lew <noone@lewscanon.com> - 2012-01-15 10:22 -0800
      Re: exporting a HashMap Roedy Green <see_website@mindprod.com.invalid> - 2012-01-16 10:55 -0800
        Re: exporting a HashMap Arne Vajhøj <arne@vajhoej.dk> - 2012-01-16 14:55 -0500
          Re: exporting a HashMap Lew <noone@lewscanon.com> - 2012-01-16 14:19 -0800
            Re: exporting a HashMap David Lamb <dalamb@cs.queensu.ca> - 2012-01-16 18:31 -0500
            Re: exporting a HashMap Roedy Green <see_website@mindprod.com.invalid> - 2012-01-17 09:54 -0800
      Re: exporting a HashMap Arne Vajhøj <arne@vajhoej.dk> - 2012-01-16 15:07 -0500
  Re: exporting a HashMap Steven Simpson <ss@domain.invalid> - 2012-01-15 19:22 +0000
  Re: exporting a HashMap Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2012-01-15 21:02 -0800

csiph-web