Ermitteln des kleinsten Messwertes von jedem Tag

Domo-Kun

Mitglied
Hallo!!!

Ich habe folgendes Problem und hoffe ihr könnt mir weiter helfen!!
Als Eingabe habe ich Datum, Uhrzeit und jeweils einen dazugehörigen Messwert (22.06.10 21:46:01,WERT) und möchte nun von jedem Datum den kleinsten Wert, der Größer ist als ein Schwellenwert ermitteln. Ausgabe soll also: 22.06.10, NIEDRIGSTERWERT sein. Ich weiß leider nicht so wirklich, wie ich an die Sache ran gehen soll vielleicht habt ihr eine kleine Anregung für mich (z.B. welche Datenstruktur ihr verwenden würdet).

Danke!

Domo-Kun
 

Crian

Top Contributor
Hast du als Eingabe eine Datei mit allen Messwerten?
Passt die in den Speicher?
Falls ja könntest du dir ein Hash aufbauen mit dem Datum als Schlüssel und einer Menge von Werten als Wert.
 

henpara

Bekanntes Mitglied
Anregung:
zB HashMap<Datum, Vector<int>>

dann kannst du mit Key-Datum das kleinste Element aus dem Int-Vector bestimmen und ausgeben lassen.
Statt Vector vielleicht eine Klasse, die SortedSet implementiert nehmen, dann sollte auch die Ausgabe recht schnell vonstatten gehen.
 

Andi_CH

Top Contributor
Geht doch auch so:

Java:
int kleinsterWert = Integer.MAX_VALUE;
while (nochNichtMitternacht(()) {
    if ((aktuellerMesswert < kleinsterWert) && (aktuellerWert > schwellwert))
        kleinsterWert = aktuellerMesswert;
}
Datum und kleinster Wert ausgeben

Wozu brauchst du eine Datenstruktur?

Aber vermutlich verstehe ich irgendetwas falsch.
 

Andi_CH

Top Contributor
Die Messwerte kommen ja zeitlich in korrekter Reihenfolge an (muss ja so sein :) ) da taugt jede Liste bzw sogar ein File als Speicher.

Durchiterieren und suchen - na ja, mal abwarten vielleicht kommt ja ein Hinweis.
 

Domo-Kun

Mitglied
Vielen Dank schonmal für die vielen Anregungen!!

Ich habe jetzt einfach mit dem Hinweis von "henpara" angefangen und eine HashMap erstellt. Die Daten werden Zeile für Zeile aus einer Text-Datei eingelesen und jeweils dem Datum alle Messwerte zugewiesen. Über meinehashmap.get("20.04.2011") würde ich dann z.B alle Messwerte von diesem Tag bekommen (ich habe das Datum einfach als String belassen). Jetzt weiß ich allerdings nicht, wie ich aus dieser Situation heraus an die Min-Werte kommen soll, die über dem Wert 25 liegen...^^Nochmal zur genaueren Erklärung, welche Ein- und Ausgaben ich habe bzw. haben möchte:

Eingabe: txt-file mit Zeilen der Form:
22.06.10 21:46:01,WERT
22.06.10 22:15:05,WERT2 ...

Ausgabe: txt-file mit Zeilen der Form
22.06.10 Wert (wobei dieser Wert der minimale aller Werte an diesem Tag über 25 ist)
 

henpara

Bekanntes Mitglied
Über meinehashmap.get("20.04.2011") würde ich dann z.B alle Messwerte von diesem Tag bekommen (ich habe das Datum einfach als String belassen).

Ich geb dir jetzt mal "pseudocode":

Java:
public int getMinVal(HashSet<int> hs, int schranke, int lastEntry) {
 int minVal = schranke;
 int kleinsterWert = lastEntry;
 for (iterator i = hs.iterator(); i.hasnext();) {
  int tmp = i.next();
  
  if (tmp < minVal && kleinsterWert == null) {
  
  } else if ( tmp>= minVal && kleinsterWert != null && tmp < kleinsterWert){
   kleinsterWert = tmp;
  }
 }
 return kleinsterWert;
}
 
Zuletzt bearbeitet:

Andi_CH

Top Contributor
Du machst einen Überlegungsfehler: ein HashMap ist KEINE Datenbank.

In einer HashMap gibt es genau einen eintrag pro Key - wenn du also das Datum als key verwendest, wirst du eine böse Überraschung erleben.

EDIT: Ich habe gesehen, dass du die Zeit auch verwendest, also geht das doch gut, ausser wenn Zwei Messwerte denselben Zeitstempel haben.

Aber warum willst du das überhaupt erst in einer komplizierten Datenstruktur ablegen? Das bringt dir rein gar nichts.

Wie ist denn deine Textdatei aufgebaut? Da sind die Werte ja wohl sicher schön der Reihe nach drin - wie sollen die sonst da reingekommen sein???:L

Gehe Deine Datei durch (Meine Glaskugel hat mir erzählt es gäbe da Zeilenweise Einträge mit Datum und Wert) auslesen und dann, wie in meinem Loop oben gezeigt Wert(e?) merken.
 

Crian

Top Contributor
Deshalb schlug ich einen Hash mit dem Datum als Schlüssel und einer Liste oder etwas geeignetem, um dazu alle Messwerte zu sammeln, als Werte vor.
 

Domo-Kun

Mitglied
Du machst einen Überlegungsfehler: ein HashMap ist KEINE Datenbank.

In einer HashMap gibt es genau einen eintrag pro Key - wenn du also das Datum als key verwendest, wirst du eine böse Überraschung erleben.

Dann habe ich wohl tatsächlich einen Denkfehler gehabt, ich bin nämlich davon ausgegangen, dass zu jedem Key eine Liste der Werte gespeichert wird...dann werf ich also alles wieder über den Haufen ;( ...

Ja... ich habe zeilenweise Einträge mit Datum und Wert.

Dann probier ich jetzt mal weiter...danke schonmal!!
 

Domo-Kun

Mitglied
Geht doch auch so:

Java:
int kleinsterWert = Integer.MAX_VALUE;
while (nochNichtMitternacht(()) {
    if ((aktuellerMesswert < kleinsterWert) && (aktuellerWert > schwellwert))
        kleinsterWert = aktuellerMesswert;
}
Datum und kleinster Wert ausgeben

Das sieht nach einer sehr einfachen und sinnvollen Sache aus, aber ich habe keine Ahnung, wie ich das dann auf jedes Datum anwenden soll...Was ich auch nicht erwähnt habe (weil ich dachte das wär' mein geringstes Problem) ist, dass jeweils der erste und der letzte Messwert, der über dem Schwellenwert liegt, verfälscht sein kann und deshalb gelöscht werden soll.

Zur Veranschaulichung: Man kann sich das so vorstellen, dass wir am Anfang eine konstante Raumtemperatur haben, dann werfen wir ein Thermometer irgendwann in heißes Wasser und nehmen es nach 6 Stunden wieder raus (Messungen erfolgen alle 15 Minuten). Dann verfälschen jeweils der erste und der letzte Wert die Messung.

Ist es insgesamt dann nicht vielleicht doch sinnvoll einen Hash und eine Liste bzw. ein Array zu nehmen?Denn wenn ich alle Werte nur dann abspeichere, wenn sie den Schwellenwert überschreiten, dann müsste ich ja einfach nur das erste und das letzte Element löschen (denn die Werte befinden sich dann ja in der Reihenfolge, wie sie eingelesen wurden).....
 

Andi_CH

Top Contributor
Dann habe ich wohl tatsächlich einen Denkfehler gehabt, ich bin nämlich davon ausgegangen, dass zu jedem Key eine Liste der Werte gespeichert wird...dann werf ich also alles wieder über den Haufen ;( ...

Ja... ich habe zeilenweise Einträge mit Datum und Wert.

Dann probier ich jetzt mal weiter...danke schonmal!!

Dann ist es schon beinahe banal - einfach Zeile für Zeile durch das File durchlaufen
Jede Zeile in Datum Zeit und Wert aufteilen (Zeit wegschmeissen)
und dann beim entsprechenden Datum prüfen ob der Wert gespeichert werden muss oder nicht.

Braucht schätzungsweise 20 Zeilen Code wenn nicht noch weniger :)
 

Crian

Top Contributor
Vielleicht kam nicht deutlich zum Ausdruck, was ich meinte. Aber ein Hash kann sehr wohl auch mehrere Werte zu einem Schlüssel ablegen, man muss es ihm nur sagen.


Java:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ComplexHash {

    public static void main(String[] args) {
        Map<String, List<String>> hash = new HashMap<String, List<String>>();

        String key1 = "P3421";
        List<String> value1 = new ArrayList<String>();
        value1.add("eins");
        value1.add("zwei");
        value1.add("drei");

        String key2 = "BG221";
        List<String> value2 = new ArrayList<String>();
        value2.add("vier");

        String key3 = "hG1";
        List<String> value3 = new ArrayList<String>();
        value3.add("fuenf");
        value3.add("sechs");


        hash.put(key1, value1);
        hash.put(key2, value2);
        hash.put(key3, value3);

        System.out.println(hash);
    }

}

Ausgabe:

Code:
{hG1=[fuenf, sechs], P3421=[eins, zwei, drei], BG221=[vier]}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Größten und kleinsten Wert im Array ermitteln? Java Basics - Anfänger-Themen 7
G Größten u. kleinsten Wert ermitteln Java Basics - Anfänger-Themen 14
F wie kann ich die Position des letzten Vokals innerhalb einer Zeichenkette ermitteln? Java Basics - Anfänger-Themen 5
S Bildgröße ermitteln & setSize() übergeben Java Basics - Anfänger-Themen 6
B Anzahl Nullen uns Einsen in String ermitteln Java Basics - Anfänger-Themen 3
R Hangman-Spiel-zufälliges Wort ermitteln Java Basics - Anfänger-Themen 4
H Häufigkeit von Zahlen ermitteln Java Basics - Anfänger-Themen 23
H Palindrom ermitteln Java Basics - Anfänger-Themen 21
J Datum ermitteln ? Java Basics - Anfänger-Themen 14
M Beliebtesten Film ermitteln Java Basics - Anfänger-Themen 6
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
H Bei forEach Index des Elements ermitteln Java Basics - Anfänger-Themen 17
B DHCP-Server Adresse ermitteln Java Basics - Anfänger-Themen 4
hello_autumn Klassen Anzahl sowie die Anzahl der Junit Tests ermitteln? Java Basics - Anfänger-Themen 8
J Ein Wort aus einer Datei zufällig ermitteln Java Basics - Anfänger-Themen 3
V Erste Schritte Potenzen b^n mittels Schleife ermitteln Java Basics - Anfänger-Themen 7
B Anzahl von Stunden / Tage von zwei Datumswerten ermitteln Java Basics - Anfänger-Themen 1
C Laufzeit eines Sortier-Algorithmus ermitteln Java Basics - Anfänger-Themen 4
O 2 Maximalwerte und Minimalwerte aus Array ermitteln Java Basics - Anfänger-Themen 9
L Fortschritt ermitteln Java Basics - Anfänger-Themen 18
N Erste Schritte HSV color space - schwarz und weiß nur anhand von Saturation oder Multiplikator ermitteln Java Basics - Anfänger-Themen 14
N Wahrscheinlichkeiten ermitteln Java Basics - Anfänger-Themen 2
L Objekt Typ zur Laufzeit ermitteln Java Basics - Anfänger-Themen 1
J Schwierigkeitsgrad eines Wortes mit Morsecode ermitteln Java Basics - Anfänger-Themen 18
J Best Practice Datum Differenz aus zwei Strings ermitteln Java Basics - Anfänger-Themen 8
M Erste Schritte primzahlen ermitteln, nur zahlen als eingabe erlauben Java Basics - Anfänger-Themen 34
G Wie kann ich diesen Wert ermitteln? Java Basics - Anfänger-Themen 4
T Rekursiv Tiefe eines binären Suchbaums ermitteln Java Basics - Anfänger-Themen 22
D Maximale Teilsumme ermitteln Java Basics - Anfänger-Themen 6
MiMa Jüngstes Datum ermitteln Java Basics - Anfänger-Themen 4
S Compiler-Fehler im array Maximum ermitteln Java Basics - Anfänger-Themen 6
V Querprodukt ermitteln Java Basics - Anfänger-Themen 6
L Array: Summe aller geraden und ungeraden Zahlen ermitteln Java Basics - Anfänger-Themen 9
Joew0815 Int to string und primzahle ermitteln Java Basics - Anfänger-Themen 2
F Jalousie Positionen ermitteln Java Basics - Anfänger-Themen 4
C Klassen aus einem Package ermitteln und per Laufzeit laden Java Basics - Anfänger-Themen 17
C Datei mit Daten einlesen und höchsten wert der zweiten Spalte ermitteln Java Basics - Anfänger-Themen 1
L Aus Datum Millisekunden ermitteln ohne Zeitzonen-Berücksichtigung Java Basics - Anfänger-Themen 6
C OOP Schwerpunkt eines Dreiecks ermitteln Java Basics - Anfänger-Themen 4
I Zeitraum eines Monats ermitteln und in String ausgeben Java Basics - Anfänger-Themen 1
S Datentypen Dimensionalität eines Arrays ermitteln Java Basics - Anfänger-Themen 2
V Anzahl von gleichen Werten in einem Int-Array ermitteln Java Basics - Anfänger-Themen 4
D TreeMap: Höheren Key ermitteln und den Value liefern Java Basics - Anfänger-Themen 3
J In einem Array die größte Zahl ermitteln und Faktorisieren. Java Basics - Anfänger-Themen 5
V Array ermitteln - in Quellcode speichern Java Basics - Anfänger-Themen 15
H JEditorPane: ermitteln, ob Zeichen unterstrichen Java Basics - Anfänger-Themen 4
M Monat der letzen 12 Monate ermitteln Java Basics - Anfänger-Themen 8
MiMa String Datum ermitteln Java Basics - Anfänger-Themen 9
H Veränderung eines Objekts ermitteln Java Basics - Anfänger-Themen 6
S Wochentage ermitteln Java Basics - Anfänger-Themen 5
S Ermitteln und Setzen der Attribute eines Objektes Java Basics - Anfänger-Themen 6
F Den Gewinner der Tordifferenz ermitteln Java Basics - Anfänger-Themen 5
J Eltern-Fenster ermitteln Java Basics - Anfänger-Themen 2
S MP3 Spielzeit mit jid3lib ermitteln? Java Basics - Anfänger-Themen 3
M Größer der eigenen .jar ermitteln Java Basics - Anfänger-Themen 4
M Größe einer Datei via. Link ermitteln Java Basics - Anfänger-Themen 9
R Alle Klassen ermitteln, die Interface implementieren / Reflection Java Basics - Anfänger-Themen 51
C Nächsten Montag ermitteln Java Basics - Anfänger-Themen 19
W Position in ArrayList ermitteln Java Basics - Anfänger-Themen 4
B Font Namen ermitteln Java Basics - Anfänger-Themen 7
C least significant bit einer HexMaske für Bitshift ermitteln Java Basics - Anfänger-Themen 2
B Pfad einer .jar im Programm ermitteln Java Basics - Anfänger-Themen 13
H "Index" eines Button ermitteln Java Basics - Anfänger-Themen 7
C Bereits geöffnetes Object ermitteln Java Basics - Anfänger-Themen 5
S ermitteln eines Wertes im StringArray Java Basics - Anfänger-Themen 4
C Hösten Wert aus mehren Listen ermitteln Java Basics - Anfänger-Themen 2
D Input/Output Pfad richtig ermitteln Java Basics - Anfänger-Themen 12
P Dateigröße von Ordnern ermitteln Java Basics - Anfänger-Themen 8
T Enum - Key als Value ermitteln Java Basics - Anfänger-Themen 7
J den x und y Wert beim klicken der Maus ermitteln Java Basics - Anfänger-Themen 2
M float/double Anzahl Nachkommastellen ermitteln Java Basics - Anfänger-Themen 18
G Sekunden bis zum Ende der aktuellen Kalenderwoche ermitteln! Java Basics - Anfänger-Themen 3
F Substring mittels RegEx ermitteln/ersetzen? Java Basics - Anfänger-Themen 2
M Datentypen Generics: Exacten Typ ermitteln Java Basics - Anfänger-Themen 6
Spin Backgrond Color von Image ermitteln Java Basics - Anfänger-Themen 2
M Größe einer Konsole ermitteln Java Basics - Anfänger-Themen 2
c_sidi90 Größe von Dateien aus File Array ermitteln Java Basics - Anfänger-Themen 12
P Ermitteln aller perfekten Zahlen Java Basics - Anfänger-Themen 12
D Pfad zu "Eigenen Dateien" ermitteln Java Basics - Anfänger-Themen 8
A Relativer Pfad zu einem File ermitteln Java Basics - Anfänger-Themen 2
P Bestimmte Zeilen einer Datei ermitteln ? Java Basics - Anfänger-Themen 30
M Datentypen Wrapperclass eines Primitives ermitteln Java Basics - Anfänger-Themen 4
StrikeTom Shift + pfeiltaste ermitteln Java Basics - Anfänger-Themen 3
H Wie Projekt-Ordner-Pfad ermitteln? Java Basics - Anfänger-Themen 11
A Aktueller Pfad des Programms (.jar) ermitteln Java Basics - Anfänger-Themen 10
P Externe IP ermitteln? Java Basics - Anfänger-Themen 5
J Das Maximum einer Liste ermitteln Java Basics - Anfänger-Themen 8
S Klassennamen ermitteln Java Basics - Anfänger-Themen 10
R Stoppuhr: Zeit ermitteln und übergeben - Variable static?? Java Basics - Anfänger-Themen 6
T PixelFarbe ermitteln und in Fenster zeichnen Java Basics - Anfänger-Themen 12
W Average-Color (Durchschnittsfarbe eines Bildes ermitteln) Java Basics - Anfänger-Themen 16
D Ermitteln der Anzahl gleicher Nachkommastellen 2er Zahlen Java Basics - Anfänger-Themen 9
P Zeilenanzahl einer *.txt ermitteln Java Basics - Anfänger-Themen 6
B Teiler einer Zahl ermitteln Java Basics - Anfänger-Themen 12
H Dimensionen eines 2D-Arrays ermitteln Java Basics - Anfänger-Themen 5
Z Gesperrte JTable auslesen bzw feldposition ermitteln Java Basics - Anfänger-Themen 10
S Anzahl der Wochen eines Monats ermitteln Java Basics - Anfänger-Themen 19
F Hüllklassentyp einer Referenzvar ermitteln? Java Basics - Anfänger-Themen 3
G IP-Adresse ermitteln??? Java Basics - Anfänger-Themen 3
K Dateipfad ermitteln Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben