Avatar billede fredand Forsker
06. december 2008 - 17:37 Der er 8 kommentarer og
1 løsning

Is there any nice class for this situation?

Hello guys!

I have an problem with a HashMap when I iterate over the keys.
Below is an example cod:

package test;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class ScrapTest {

    /**
    * @param args
    */
    @SuppressWarnings("unchecked")
    public static void main(String[] args) {
        HashMap hashmap = new HashMap();
        hashmap.put("a", "object 1");
        hashmap.put("c", "object 2");
        hashmap.put("b", "object 3");
        hashmap.put("f", "object 4");
        hashmap.put("g", "object 5");
        hashmap.put("e", "object 6");
       
        Set keys = hashmap.keySet();
        Iterator iterator = keys.iterator();
        while( iterator.hasNext() )
        {
              String key = (String)iterator.next();
              System.out.println(key);
        }

    }

}

This gave me this output:
f
g
e
b
c
a

I want to get this output (the order that they are inserted):
a
c
b
f
g
e

Is there a way to manage this?
Perhaps whit some other class?

So if you guys got any ideas please let me know!
Best regards
Fredrik
Avatar billede arne_v Ekspert
06. december 2008 - 17:41 #1
The order of entries in a HashMap is somewhat Random.

If you need both direct lookup and maintaining of insert order, then you can:
have the same objects on both a HashMap and an ArrayList.
Avatar billede simonvalter Praktikant
06. december 2008 - 18:38 #2
SortedMap map = new TreeMap();
Avatar billede arne_v Ekspert
06. december 2008 - 19:01 #3
Der skal vel lidt mere til fordi:
  natural order != insert order
Avatar billede simonvalter Praktikant
06. december 2008 - 19:13 #4
ja ok den del fik jeg ikke lige fat i :)
Avatar billede simonvalter Praktikant
06. december 2008 - 19:17 #5
LinkedHashMap må da kunne bruges så.
Avatar billede arne_v Ekspert
06. december 2008 - 19:19 #6
Jeps.
Avatar billede fredand Forsker
06. december 2008 - 21:01 #7
Hello Guys!

Thanks alot!

The LinkedHashMap seems to do the work perfectly for me!

Please give svar so can reward you mates!

Best regards
Fredrik
Avatar billede arne_v Ekspert
06. december 2008 - 22:55 #8
Simons
Avatar billede simonvalter Praktikant
07. december 2008 - 13:23 #9
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester