Huffman Code

  • Themenstarter Themenstarter Bgag
  • Beginndatum Beginndatum
B

Bgag

Hallo Leute!

Ich soll einige Klassen schreiben, die mir das generieren von Huffman-Code anhand einer Textdatei ermöglichen. Ich kann bisher eine Textdatei in einen String lesen, alles Uppercase machen, die Buchstaben zählen und in eine hashMap packen. Die Knoten-Klasse ist auch fertig. Ich habe also eine HashMap alla HashMap<Integer,Node>. Wie kann ich diese HashMap nun anhand des Integer-Wertes sortieren? Wie ist es außerdem möglich Einträge aus der HashMap zu löschen?

MfG, Andy
 
hi Catull,
ich habe zwar keine Ahnung was Huffman Code ist (ist vermutlich eine meiner Bildungslücken :-().
Nun aber zu Deinen beiden Fragen:
Du kannst mit remove(key) aus einer Map etwas entfernen.
Bei der Sortierung von Hashmaps in Deinem Fall, kommt es darauf an, ob Deine Schlüssel zeitlich (z.B. aufsteigend) in Deinem Programmfluss eingebracht werden. Wenn dem so ist kannst Du es mit der java.util.LinkedHashMap tun.
Wenn Deine Objekte bezogen auf die Schlüsseln ganz unsortiert reinkommen, kannst Du es mit einer java.util.TreeMap bewerkstelligen.

viel Spaß wünscht Dir noch

Takidoso
 
Morgen!

Danke erstmal für deine Hilfe.

Das erzeugen von Huffman Code ist eine Art der Komprimierung. Man generiert praktisch einen Binärbaum, dessen Blätter jeweils ein Zeichen repräsentieren. Das Besondere dabei ist, dass Zeichen die häufiger vorkommen eine kürzere Codierung (ergibt sich aus den Binärpfaden) als weniger auftretende Zeichen.

Zu meinem Problem zurück. Ich möchte meine HashMap gerne mit dem Insertion Sort Algorithmus sortieren. Die Theorie dahinter ist eigentlich recht einfach. Ich nehme mir den ersten Datensatz vor lese den Integer-Wert (nicht den Key) und vergleiche diesen mit den folgenden so lange, bis ich einen Wert größer dem momentanen Wert gefunden habe und füge meinen Datensatz davor wieder ein. Finde ich einen Werte die gleich meinem Wert sind füge ich meinen Datensatz dahinter wieder ein. Eigentlich also ganz einfach. Wie setzte ich das aber nun mit einer HashMap um?

MfG, Andy
 
Zurück