HashMap

Status
Nicht offen für weitere Antworten.

CroweHammer

Bekanntes Mitglied
Hi Leute,

ich hab die Aufgabe ein logfile eines Schlüsselaus-und eingabe Programms auszuwerten.
Ich lasse das logfile einmal durchlaufen Zeile für Zeile, so und jetzt das eigentliche Problem. Das logfile speichert die Daten eines ganzen Tages, d.h. jeder Schlüssel kann ein paar mal ausgegeben und zurückgegeben werden.

Wenn z.B. der Schlüssel mit der Nummer "1" im logfile entdeckt wird, soll entweder ein interner counter um eins erhöht werden und die Zahl in die HashMap eingetragen oder bei einer Ausleihe die Ausleihzeit in die HashMap eingetragen werden.
Wenn das logfile also einmal durchlaufen ist, sollen in der HashMap hinterher alle Schlüssel mit ihren Ausleihzeiten und Ausgaben stehen, damit ich die HashMap hinterher auswerten kann und in eine .txt schreiben kann, dies lasst aber mal eine Sache sein ;-)
So könnt Ihr euch es vorstellen, wie die HashMap hinterher aussehen soll:

1, {1, 123423, 2, 162312, 3, 203845}
2, {1, 063412, 2, 124534}
3, {1, 235434}

Wie Ihr hier dran sehen können bei jedem Schlüssel unterschiedlich viele Ein-und Ausgaben pro Tag entstehen. Die Ausleihzeit speicher ich als Integer, in die HashMap, also nicht wundern, dass keine Doppelpunkt(12:34:23) oder ähnliches dazwischen sind.

Jetzt hier noch meine HashMap:
HashMap<Integer, Integer[]> hashMap = new HashMap<Integer, Integer[]>();

Ist das umsetzbar? Wenn ja wie schaffe ich es, dass wenn ein Schlüssel im logfile gefunden wird, entweder der counter erhöht oder die Ausleihzeit, für diesen Schlüssel, in das Integer Array in der HashMap angehängt wird? Nach Durchlauf meines Programms, soll die HashMap also soviele Zeilen haben, wie Schlüssel in dem logfile vorkommen.

Ich weis es is harte Kost, aber ich hoffe Ihr könnt mir weiterhelfen und ich habe es einigermaßen verständlich erklärt ;-)

Gruß Patrick
 
S

SlaterB

Gast
da du nicht weißt, wie viele Elemente pro Schlüssel da sind, empfehle ich dynamischer
Map<Integer, List<Integer>>

umsetzbar ist das, ja

---------

was es mit dem Counter auf sich hat, ist noch nicht klar,
ich nehme an, du analysierst in einer Schleife eine Log-Zeile und hast dann
Integer key = ..;
Integer value = ..;
dann kannst du an dieser Stelle die Map aktualsieren oder irgendwas mit deinem counter machen
oder beides oder nichts davon,

was ist die Frage, wovon hängt das ab, was ist das Problem?
 

HLX

Top Contributor
Du solltest ein Objekt mit allen erforderlichen Informationen anlegen.

Code:
public class KeyInfo {

      private Integer id;
      private List<Date> time;

      // getter + setter

}

Dieses Objekt speicherst du unter der Id in der HashMap. Bei Veränderungen kannst du es aus der HashMap holen und den counter oder die Zeit anpassen.

Edit: counter entfernt. Bei Ausleihen, einfach ein Datum hinzufügen. Die Ausgabe kann durch Iteration über die Liste erfolgen (Methode toString).
 
Zuletzt bearbeitet:

CroweHammer

Bekanntes Mitglied
@ Slater, wenn ich eine List verwende, wie muss dann mein hashMap.put... Befehl aussehen.

Also wenn z.B. der Schlüssel "23" zurückgegeben wird, soll die hashMap an Stelle Key(in dem Fall 23) aktualisiert werden.
Sprich bei einer Rückgabe wird eben der counter(jeder Schlüssel muss natürlich einzeln hochgezählt werden) hochgezählt und die Zahl an die Liste angehängt werden, die der counter zurückgibt und bei einer Ausleihe wird die Zeit an die Liste angehängt.
Ich brauche den counter nur wegen einer späteren Auswertung, in der ich die Anzahl brauche der Rückgaben an einem Tag ;-)
Mein Problem ist das anhängen, an der Stelle Key(in dem Fall 23), ich weis mir immer nur mit überschreiben zu helfen, und nicht anhängen.
 
S

SlaterB

Gast
was der Counter ist und macht, und ob er in irgendeinem Zusammenhang mit der Map oder diesem ganzen Thema steht,
habe ich nach wie vor nicht verstanden,
ist der counter exakt gleich die Anzahl der Elemente in der Liste pro Key?

Integer key = ..;
Integer value = ..;
Liste l = liste aus map holen
(wenn l null, dann neu erzeugen und in Map speichern)
value in Liste l speichern
 

CroweHammer

Bekanntes Mitglied
Der Counter zählt wie oft jeder Schlüssel zurückgegeben wurde.
Also nein nicht gleich der Anzahl an Elementen in der Liste ;-) und wie hole ich die Liste aus der HashMap?
Es geht mir einfach nicht in Kopf rein.

Danke, für deine/eure Hilfe
 
S

SlaterB

Gast
na so wie du jedes Objekt aus einer Map holst,
API lesen oder Tutorials/ Lehrbücher oder einfach mal bei google/ hier im Forum nach Beispielcode mit Maps suchen musst du schon selber ;)
 

CroweHammer

Bekanntes Mitglied
okay, ich mach mich am Montag dran, weil ich dann wieder im Geschäft bin. Bin grad noch an einem PHP Projekt nebenher, wenn ich soweit bin und wieder vor Probleme stehen werd ich mich hier melden.
Wünsche euch ein angenehmes Wochenende und für die Arbeitenden einen schönen Feierabend.
Gruß Pat
 

CroweHammer

Bekanntes Mitglied
So ich bin ein Stück weitergekommen. Ich hab jetzt folgende HashMap verwendet:

private static HashMap<Integer, ArrayList<String[]>> hashMap;

Allerdings stehe ich jetzt vor dem großen Rätsel, wie ich die Werte in der hashMap am Ende ausgeben kann, weil wenn ich Sie über get(key) anspreche, bekomme ich nur sowas [[Ljava.lang.String;@addbf1], wie man es von hashMaps eben kennt? Man muss wahrscheinlich den Weg über eine Collection nehmen, habe schon soviel probiert aber bekomme es einfach nicht ausgegeben o_O

Könnt ihr mir weiterheilfen?
 

faetzminator

Gesperrter Benutzer
Das ist die toString() Methode vom String[], warum brauchst du da String[]? Was ist an
private static Map<Integer, List<Integer>> map;
nicht ok?
 

CroweHammer

Bekanntes Mitglied
Weil ich die Zeiten, erstmal als String reinschreiben will, also in der Form: 00:12:33
Wenn ich nämlich das Ganze in ein Integer umwandle wäre das ja theoretisch sowas 001233, aber letzten endes gibt er dann 1233 aus, wie das bei Integer so üblich ist und weil ich später mit dem DateFormat weiterarbeite, ist es praktisch wenn ich schon folgende Form vorliegen habe. Daher ist meine Wahl auf die neue Art der HashMap gefallen.

Ich hab es mal wie folgt probiert, aber gibt das oben in meinem ersten post genannte aus:

for(int i = 0; i < 600; i++)
{
if(hashMap.containsKey(i))
{
System.out.println(hashMap.get(i).toString());
}
}
 

faetzminator

Gesperrter Benutzer
Wenn schon, dann so:
--> Du kannst immer noch kein "sinnvolles" String[] ausgeben!
Java:
for(int i = 0; i < 600; i++) {
    if(hashMap.containsKey(i)) {
        String[] str = hashMap.get(i);
        for (String s : str) {
            System.out.println(f);
        }
    }
}
 

CroweHammer

Bekanntes Mitglied
Danke, damit kann ich meine nötigen Testergebnisse erstmal überprüfen, für die Auswertung am Ende, werde ich mir wohl noch etwas komfortableres ausdenken müssen :p

Java:
for(int i = 0; i < 600; i++)
{
  if(hashMap.containsKey(i))
  {
    ArrayList<String[]> str = hashMap.get(i);
    for(String[] s : str)
    {
      for(int j = 0; j < s.length; j++)
      {
        System.out.println(i+" "+s[j]);
      }
    }
  }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
T HashMap values Bearbeitung Allgemeine Java-Themen 4
T Hashmap Values Bearbeitung Allgemeine Java-Themen 1
JavaJakob22 Bestimmte HashMap importieren Allgemeine Java-Themen 4
killig HashMap mit if-Anweisung überprüfen Allgemeine Java-Themen 4
killig Textdatei einlesen und in HashMap speichern (duplikate entfernen) Allgemeine Java-Themen 12
LimDul Kam eine java.net.URL zu einer HashMap und ging als DNS Anfrage wieder heraus Allgemeine Java-Themen 18
L HashMap Allgemeine Java-Themen 10
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
B HashMap Duplikate Allgemeine Java-Themen 4
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
W Array vs. ArrayList vs. HashMap Allgemeine Java-Themen 20
F Tabelle aus CSV, 2 dimensionale HashMap? Allgemeine Java-Themen 4
D Mit Java PHP hashmap lesen Allgemeine Java-Themen 1
H Swing HashMap zu Tabelle macht mir Probleme Allgemeine Java-Themen 4
B HashMap aus Value Key bekommen Allgemeine Java-Themen 2
N HashMap und Methoden richtig einbinden Allgemeine Java-Themen 2
J Problem bei Hashmap Key-Abfrage Allgemeine Java-Themen 4
X JSONObject auslesen und in HashMap hinterlegen Allgemeine Java-Themen 16
N Werte aus Hashmap auslesen und übertragen Allgemeine Java-Themen 8
JavaWolf165 JsonObject in HashMap umwandeln Allgemeine Java-Themen 16
R ArrayList und HashMap Allgemeine Java-Themen 7
L Assoziatives Datenfeld, schneller wie Hashmap Allgemeine Java-Themen 35
G Methoden HashMap speichert unter falschen Schlüsseln Allgemeine Java-Themen 6
D Verschachtelte HashMap initializieren Allgemeine Java-Themen 1
L Variablen HashMap nimmt value nicht an Allgemeine Java-Themen 3
R Hierarchie mit HashMap darstellen Allgemeine Java-Themen 19
D Datentypen HashCollision in HashMap Allgemeine Java-Themen 3
Z Concurrent Modification Exception - HashMap (kein remove) Allgemeine Java-Themen 4
B Zugriff auf eine HashMap Allgemeine Java-Themen 4
B Userdaten in Hashmap speichern - Servlet Allgemeine Java-Themen 6
T Hashmap mit geordneter/ungeordneter liste als Value Allgemeine Java-Themen 5
I HashMap key wird nicht erkannt trotz überschriebener equals/hashCode Methode Allgemeine Java-Themen 6
M Füllfaktor einer Hashmap Allgemeine Java-Themen 7
A Collections HashMap.containsKey findet keine immutablen Objekte Allgemeine Java-Themen 3
D Datentypen HashMap Allgemeine Java-Themen 5
R Collections Performance einer HashMap Allgemeine Java-Themen 26
C LinkedList und ArrayList in HashMap Allgemeine Java-Themen 4
T Erste Schritte HashMap<String, int> Allgemeine Java-Themen 2
K Hashmap sortieren Allgemeine Java-Themen 6
F HashMap überschreibt Daten von anderen HashMap Allgemeine Java-Themen 5
S HashMap containsKey liefert immer false zurück Allgemeine Java-Themen 15
H Problem beim Sortieren einer HashMap mit TreeSet Allgemeine Java-Themen 4
K HashMap sorting verhindern Allgemeine Java-Themen 10
J Generic von einer ArrayList/HashMap bekommen Allgemeine Java-Themen 7
L HashMap mit Enum Keys Allgemeine Java-Themen 3
J Array als Schlüssel für HashMap Allgemeine Java-Themen 6
S Geschwindigkeit HashMap oder .getParent Allgemeine Java-Themen 5
V Hashmap-Frage Allgemeine Java-Themen 3
M HashMap - Ich bin verwirrt Allgemeine Java-Themen 3
H2SO3- multiple Hashmap Allgemeine Java-Themen 5
K Threading - schreiben auf Hashmap/löschen - ConcurrentModificationException Allgemeine Java-Themen 3
J NullPointerException mit HashMap Allgemeine Java-Themen 2
V Probleme mit eigener Hashmap Allgemeine Java-Themen 10
N HashMap<String,Vector<String>> a = new HashMap<String,Vector<String>>(); Allgemeine Java-Themen 4
I HashMap Problem... Allgemeine Java-Themen 3
Daniel_L Map/HashMap - Reihenfolge von Einträgen Allgemeine Java-Themen 4
L HashMap Key Reihenfolge umkehren Allgemeine Java-Themen 8
N wie greife ich auf hashmap in vector zu Allgemeine Java-Themen 9
J Inhalt von HashMap vergleichen Allgemeine Java-Themen 3
Z Serialisierung und Deserialisierung einer HashMap Allgemeine Java-Themen 17
P Wieso HashMap-Zugriff mit Object, statt mit MyObject? Allgemeine Java-Themen 12
K Serialisierung von Hashmap in Vector Allgemeine Java-Themen 3
T Hashmap füllen mit rs sortierung Allgemeine Java-Themen 9
D HashMap sortieren Allgemeine Java-Themen 2
P Große Datenmenge wie speichern (HashMap? TreeMap?) Allgemeine Java-Themen 11
D HashMap Problem Allgemeine Java-Themen 14
G Runnables aus Hashmap starten Allgemeine Java-Themen 4
J java.util.ConcurrentModificationException bei HashMap? Allgemeine Java-Themen 2
G HashMap key ändern Allgemeine Java-Themen 5
L HashMap / Objekte auf Festplatte zur Laufzeit auf HD swappen Allgemeine Java-Themen 7
S Problem mit Hashmap Allgemeine Java-Themen 2
G Datei einlesen und in HashMap verarbeiten Allgemeine Java-Themen 3
E Auslesen aus Hashmap Allgemeine Java-Themen 3
P HashMap mit mehreren gleichen keys Allgemeine Java-Themen 4
alexpetri hashmap bästpractice Allgemeine Java-Themen 4
J HashMap mit Webservice realisierbar? Allgemeine Java-Themen 4
ARadauer hashmap vs hastable Allgemeine Java-Themen 5
T HashMap#values Reihenfolge Allgemeine Java-Themen 13
M ArrayList sortieren - HashMap mit sort_id vorhanden Allgemeine Java-Themen 2
L Wie kann ich eine HashMap abspeichern? Allgemeine Java-Themen 3
T HashMap (String, Object(String , int)) nach int sortieren Allgemeine Java-Themen 7
M HashMap kapselt zwei Objekte aber wie baut man eine Matrix? Allgemeine Java-Themen 2
E MySQL-Datenbank <-> HashMap/TreeMap Allgemeine Java-Themen 1
P List in Hashmap schreiben Allgemeine Java-Themen 5
M Threads in einer Hashmap Allgemeine Java-Themen 5
P HashMap an 2 Stellen veränderbar Allgemeine Java-Themen 13
P HashMap auflösen Allgemeine Java-Themen 9
MQue HashMap durchlaufen Allgemeine Java-Themen 2
MQue HashMap Allgemeine Java-Themen 2
M HashMap kommt beim Löschen aus dem Tritt Allgemeine Java-Themen 6
MQue HashMap Allgemeine Java-Themen 6
MQue HashMap Allgemeine Java-Themen 9
MQue Sichtbarkeit/HashMap/NullPointerexception Allgemeine Java-Themen 2
B HashMap.containsKey. Allgemeine Java-Themen 10
J byte-Array in Hashmap speichern? Allgemeine Java-Themen 3
S Klasse in HashMap speichern Allgemeine Java-Themen 3
G [quote]the type HashMap is not generic; it cannot be paramet Allgemeine Java-Themen 4
M HashMap sortiert Allgemeine Java-Themen 6
G Performance JDOM - DOM - eigene HashMap (SAX) Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben