# HashMap Sortierung



## Quadaptor (23. Dez 2004)

Hallo alle zusammen,
gibt es eine logische Erklärung, warum Daten in einer HashMap kunterbund durcheinander geworfen werden?

Nachfolgend ein kleines Beispiel-Script, dass die ganze Sache verdeutlicht:


```
import java.util.HashMap;
import java.util.Iterator;

public class HashMapTester {

    private HashMap hm = new HashMap();
    
    public static void main(String[] args) {
        new HashMapTester();
    }
    
    public HashMapTester()
    {
        this.add(4016, 1, new HashMap());
        this.add(4016, 3, new HashMap());
        this.add(4016, 5, new HashMap());
        this.add(4016, 8, new HashMap());
        this.add(4016, 10, new HashMap());
        this.add(4016, 13, new HashMap());
        this.add(4016, 16, new HashMap());
        this.add(4016, 19, new HashMap());
        this.add(4016, 20, new HashMap());
        this.add(4016, 23, new HashMap());
    }
    
    private void add(int mapping, int id, HashMap data)
    {
        HashMap		dataArray		= null;
        
        if(this.hm.containsKey(String.valueOf(mapping)))
        {
            dataArray		= (HashMap) this.hm.get(String.valueOf(mapping));
            this.hm.remove(String.valueOf(mapping));
        }
        else
        {
            dataArray		= new HashMap();
        }
        
        dataArray.put(String.valueOf(id), data);
        this.hm.put(String.valueOf(mapping), dataArray);
        
        System.out.println("|-> insert nr. " + id + " (mapping id: " + mapping + ")");
        System.out.println("|    |-> result after insert:");
        
        Iterator i = dataArray.keySet().iterator();
	
        while(i.hasNext())
        {
            System.out.println("|    |    |-> " + i.next());
        }
        
        System.out.println("|----|----|------------------");
    }
}
```

Die passende Ausgabe dazu:


> |-> insert nr. 1 (mapping id: 4016)
> |    |-> result after insert:
> |    |    |-> 1
> |----|----|------------------
> ...



Mein Ziel ist es, die Daten in der gleichen Reihenfolge wieder auslesen zu können, wie sie eingefügt wurden.

Hat jemand von euch eine Idee, wie ich das bewerkstelligen könnte?


----------



## Roar (23. Dez 2004)

:-/ das geht mit ner HashMap nicht. die daten werden in hash buckets gespeichert die ihnen nach ihrem haswert zugeteuilt werden( oder so) da ist der wert völlig irrelevant und seine sortierung völlig sinnlos  benutz doch eine TreeMap, vielleicht gehts da besser... die ist sogar schon automatisch geordnet!


----------



## foobar (23. Dez 2004)

> Mein Ziel ist es, die Daten in der gleichen Reihenfolge wieder auslesen zu können, wie sie eingefügt wurden.



http://java.sun.com/j2se/1.4.2/docs/api/java/util/LinkedHashMap.html


----------



## stev.glasow (23. Dez 2004)

foobar hat gesagt.:
			
		

> > Mein Ziel ist es, die Daten in der gleichen Reihenfolge wieder auslesen zu können, wie sie eingefügt wurden.
> 
> 
> 
> http://java.sun.com/j2se/1.4.2/docs/api/java/util/LinkedHashMap.html


 :shock:  Seh ich zum ersten mal


----------



## foobar (23. Dez 2004)

stevg hat gesagt.:
			
		

> foobar hat gesagt.:
> 
> 
> 
> ...



Man lernt nie aus  :###


----------



## stev.glasow (23. Dez 2004)

Das sowieso.


----------



## L-ectron-X (23. Dez 2004)

stevg hat gesagt.:
			
		

> [...]
> :shock:  Seh ich zum ersten mal


Wer kann schon von sich behaupten alle Klassen und deren Sinn und Nutzen zu kennen?
LinkedHashMap ist mir ebenso neu. Da brauche ich aber nicht  zu werden. :wink:


----------



## Quadaptor (23. Dez 2004)

Hey, ihr seit super! Klappt hervorragend. Danke!


----------



## meez (23. Dez 2004)

Zu beachten: since JDK1.4
Viele Firmen arbeiten halt noch mit 1.3... (Wir auch)


----------



## Student (23. Dez 2004)

Quadaptor hat gesagt.:
			
		

> Hey, ihr seit super!


du meinst mich, oder? ^^


----------



## Quadaptor (23. Dez 2004)

Student aka Ben, klappe halten!


----------



## Student (23. Dez 2004)

muhahaha^^ :bae:


----------

