![]() |
|
|||||||
| Allgemeine Java-Themen Allgemeine Themen, die nicht in andere Fachforen und nicht zu den Java Basics passen |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 10.10.2008
Fachbeiträge: 106
Abgegebene Danke: 9
Erhielt 1 Danke für 1 Beitrag
|
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 |
|
|
| #2 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 13.11.2005
Fachbeiträge: 32.005
Abgegebene Danke: 0
Erhielt 2.620 Danke für 2.580 Beiträge
|
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?
__________________
Hansa wird Meister. |
|
|
| #3 (permalink) | |
|
Stammbenutzer
Megabyte
Registriert seit: 02.08.2006
Fachbeiträge: 1.021
Abgegebene Danke: 0
Erhielt 6 Danke für 6 Beiträge
|
Du solltest ein Objekt mit allen erforderlichen Informationen anlegen.
Code:
public class KeyInfo {
private Integer id;
private List<Date> time;
// getter + setter
}
Edit: counter entfernt. Bei Ausleihen, einfach ein Datum hinzufügen. Die Ausgabe kann durch Iteration über die Liste erfolgen (Methode toString). Geändert von HLX (15.05.2009 um 08:36 Uhr) |
|
|
| #4 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 10.10.2008
Fachbeiträge: 106
Abgegebene Danke: 9
Erhielt 1 Danke für 1 Beitrag
|
@ 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. |
|
|
| #5 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 13.11.2005
Fachbeiträge: 32.005
Abgegebene Danke: 0
Erhielt 2.620 Danke für 2.580 Beiträge
|
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
__________________
Hansa wird Meister. |
|
|
| #6 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 10.10.2008
Fachbeiträge: 106
Abgegebene Danke: 9
Erhielt 1 Danke für 1 Beitrag
|
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 |
|
|
| #7 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 13.11.2005
Fachbeiträge: 32.005
Abgegebene Danke: 0
Erhielt 2.620 Danke für 2.580 Beiträge
|
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
__________________
Hansa wird Meister. |
|
|
| #8 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 10.10.2008
Fachbeiträge: 106
Abgegebene Danke: 9
Erhielt 1 Danke für 1 Beitrag
|
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 |
|
|
| #9 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 10.10.2008
Fachbeiträge: 106
Abgegebene Danke: 9
Erhielt 1 Danke für 1 Beitrag
|
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? |
|
|
| #10 (permalink) | |
|
Stammbenutzer
Halbes Gigabyte
Registriert seit: 05.01.2007
Fachbeiträge: 5.038
Abgegebene Danke: 61
Erhielt 559 Danke für 540 Beiträge
|
Das ist die toString() Methode vom String[], warum brauchst du da String[]? Was ist an
private static Map<Integer, List<Integer>> map; nicht ok?
__________________
Ich bin keine Signatur, ich headbang hier nur! |
|
|
| #11 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 10.10.2008
Fachbeiträge: 106
Abgegebene Danke: 9
Erhielt 1 Danke für 1 Beitrag
|
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()); } } |
|
|
| #13 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 10.10.2008
Fachbeiträge: 106
Abgegebene Danke: 9
Erhielt 1 Danke für 1 Beitrag
|
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
|
|
|
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| werte aus hashmap lesen und vergleichen? | guest | Java Basics - Anfänger-Themen | 2 | 23.02.2007 11:58 |
| Hashmap in JSF? | Hilyama | Allgemeines EE | 0 | 31.08.2005 09:02 |
| HashMap Sortierung | Quadaptor | Java Basics - Anfänger-Themen | 11 | 23.12.2004 14:13 |
| HashMap mit Wortliste vergleichen | kognitio | Java Basics - Anfänger-Themen | 6 | 03.06.2004 11:23 |
| HashMap richtig zurückgeben | shiRiaRu | Java Basics - Anfänger-Themen | 14 | 26.02.2004 15:06 |
| Lesezeichen |
|
|