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


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

Re: exporting a HashMap

From Eric Sosman <esosman@ieee-dot-org.invalid>
Newsgroups comp.lang.java.programmer
Subject Re: exporting a HashMap
Date 2012-01-15 12:01 -0500
Organization A noiseless patient Spider
Message-ID <jev0q9$aoo$1@dont-email.me> (permalink)
References <ljv5h7pl5t57ikpoqntvu1iif4tkrl9l7t@4ax.com>

Show all headers | 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