Map<String, Treeset> aus Treeset bestimmten Wert auslesen

Todesbote

Mitglied
Hallo zusammen,
ich habe in meinem Programm eine Map<String, Treeset>.
Zu jedem Key sind im Treeset mehrere Zeilen gespeichert.
Diese sehen etwa so aus:
a b c d
a b c d

Nun möchte ich z.B das c aus der letzen Zeile haben.
Dieses c enthält einen Status (update, neuanmeldung, ausfall).
Ich möchte eine Ausgabe machen die mir sagt Erreichbar J/N (bei ausfall N).

Das Aufrufen der Map funktioniert soweit und ich kann auch die kompletten Schlüssel - Wert Paare ausgeben.
In der Java API hab ich was zu last() gelesen damit müsste ich ja die letzte Zeile (a b c d) des Set bekommen. Allerdings habe ich Probleme diese in meinen Code einzubringen. Wie rufe ich last() auf?

Oder gibt es andere Möglichkeiten?

mfg
 
Sicher, dass das Design korrekt ist?

Beinhaltet die Map strings?

Wären hier nicht Objekte sinnvoller?

Ich kann mir nicht vorstellen, dass Last hier die Lösung ist.
 
Meine Map sieht so aus:
[JAVA=42]
// Treemap zum Speichern und Sortieren key=serienNr value=Zeile des CSV Files
public static void logEintragEinfuegen(Map<String, Set<LogEintrag>> logEintraege, LogEintrag le) {
if (le.serienNr != null) {
if (logEintraege.containsKey(le.serienNr) == false) {
Set<LogEintrag> s = new TreeSet<LogEintrag>(new LogEintragComparator());
s.add(le);
logEintraege.put(le.serienNr, s);
}
else {
Set<LogEintrag> s = logEintraege.get(le.serienNr);
s.add(le);
}
}//Ende if
}//Ende logEintragEinfuegen
[/code]

Die Ausgabe so:
G23-511-C.01/149-006413:
LogEintrag [casdu=8307, stationsname=Am_Goldberg, stationsnummer=1, status=Update, uhrzeit=Thu Jun 28 23:04:03 CEST 2012,
LogEintrag [casdu=8307, stationsname=Am_Goldberg, stationsnummer=1, status=Update, uhrzeit=Fri Jul 27 01:30:45 CEST 2012,


Jede Zeile besteht wiederrum aus Objekten( z.B. casdu ist ein Objekt von typ int. etc)
 
Zuletzt bearbeitet:
Hier noch der Code meiner Klasse in der ich die Auswertung vornehmen möchte.
[JAVA=42]
package de.odr.main;
import java.util.Map;
import java.util.Set;

public class LogEintragInterpretieren {
public LogEintragInterpretieren(Map<String, Set<LogEintrag>> _myMap) {
super();
this._myMap = _myMap;
}
Map<String, Set<LogEintrag>> _myMap = null;


// Hier soll geprüft werden ob der Zähler kommunikativ ist oder nicht

public void kommunikativ() {
for(Map.Entry<String, Set<LogEintrag>> e : _myMap.entrySet()){
String key = e.getKey();
Set<LogEintrag> value = e.getValue();
if(value.equals("Ausfall")) // funktioniert so nicht!
System.out.println("Kommunikativ: N");
else
System.out.println("Kommunikativ: J");
//System.out.println(key +"="+value);
}

}
}
[/code]
 
Zuletzt bearbeitet:
Bin nun selber auf die Lösung gekommen. Mein Problem war, dass ich Set anstatt von TreeSet in meiner Map verwendet habe. Deshalb wurde die Funktion last() nicht erkannt.
So klappts =) :
[JAVA=42]

import java.util.Map;
import java.util.TreeSet;

public class LogEintragInterpretierer {
public LogEintragInterpretierer(Map<String, TreeSet<LogEintrag>> myMap) {
super();
this.myMap = myMap;
}
Map<String, TreeSet<LogEintrag>> myMap = null;

public void kommunikativ() {
for(Map.Entry<String, TreeSet<LogEintrag>> e : myMap.entrySet()){
String key = e.getKey();
TreeSet<LogEintrag> value = e.getValue();
System.out.println(key+"="+value);
if(value.last().status.equals("Ausfall"))
System.out.println("Kommunikativ: N");
else
System.out.println("Kommunikativ: J");
}
}
[/code]

mfg
 
Zuletzt bearbeitet:

Zurück
Oben