Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #11351
| 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> |
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 | Next — Previous in thread | Next in thread | Find similar | Unroll 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