Wie Nachschlagetabelle implementieren

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Guten Abend zusammen,

ich stehe gerade vor folgender Problemstellung. Ich muss verschiedene Tabellen im Speicher abbilden. Okay soweit, so gut. Ich versuche ma es an einem Beispiel zu erklären:

Gegegeben ist eine Tabelle mit 4 Spalten und 100 Zeilen. Diese Tabelle muss leider fest codiert werden. Die Kombination aus den 3 der 4 Spalten lässt eine eindeutige Indentifikation des 4. nachzuschlagenden Wertes zu.

Beispieltabelle

A|B|D|E
1|1|1|0
1|0|1|0
0|0|1|5

Wenn ich jetzt den Wert "5" suche (letzte Spalte), sind mir zuvor die Spaltendaten (A-C) hier 0,0,1 gegegeben.

Nun meine Frage, wie kann ich

a) die Tabelle effiktiv abbilden
b) letztendlich nach einem Wert suchen

Vielleicht hat ja jemand ein paar Sichtwörter für mich, die mich weiterbringen.

Vorab schonmal vielen Dank!

Gruß

Sebastian
 
G

Gast

Gast
Da seh ich den Wald vor lauter Bäumen nicht!

Wie wäre es mit einem Binären Baum, wenn in den Spalten A-C nur 0 und 1 stehen. bzw. einem anderen Baum. wenn die Werte anders sind.

Also vorausgesetzt du willst folgendes du gibst eine dreistellige Zahl ein z.B 0,0,1 und willst als Ergebnis die 5 bekommen.
 
G

Guest

Gast
Danke für die schnelle Antwort.

Ich glaube ein Baum würde nicht funktionieren, da

1.) die Tabelle hier nur beispielhaft (ich weiß, war wohl nen schlechtes Beispiel) angebildet ist, und auch Strings speichern können muss
2.) Ich vor der Erzeugung der Klasse noch nicht weiß, ob die ich über die Spalten A-C den Wert D identifizieren muss, oder über die Spalten B-D den Wert A usw. usw.

Gruß

Sebastian
 

Hilefoks

Bekanntes Mitglied
Klingt irgendwie so als wenn man das wie eine Shannon-Fano Kodierung betrachten könnte... aber ich verstehe dein Problem nicht wirklich - wer also gut wenn du dein Problem (speziell deine Tabelle) etwas genauer beschreiben könntest.

MfG,
Hilefoks
 
S

SlaterB

Gast
ein ganz allgemeines aber auch langsames Vorgehen:
die drei Index-String zu einem zusammenfügen (evtl. mit Unique-Trennzeichen) und in einer Map auf das 4. Element mappen

wenn Strings als Keys im Spiel sind, wird man auch nicht entscheind mehr machen können,
falls die Menge der Keys auf einen bestimmten Bereich begrenzt ist, kann man evtl. Teilkeys anderen Werten zuordnen, die besser zu verarbeiten sind,

es ist auch eine Frage, woher die Suchanfragen kommen, ob ein User die ganz frisch eintippt oder die im Laufe eines Algorithmusses auftauchen,
wo auch wieder vielleicht die Möglichkeit besteht, andere Keys zu verwenden
 
G

Guest

Gast
@Hilefoks

Die Tabelle bildet eine Art Entscheidungsmatrix ab. Vereinfacht könnte man die Problematik vielleicht so beschreiben.
Du hast vier Werte (je Zeile), brauchst aber nur drei um die gesuchte Zeile zu identifizieren. Oder anders ausgedrückt:

Du bekommst vier Werte (deren Einordnung zur Spalte bekannt ist). Dann durchsuchst du alle Zeilen und prüfst, ob in der aktuell durchsuchten Spalte der gesuchte Wert vorhanden ist. Alle Zeilen, die den gesuchten Wert nicht enthalten können aus der zu durchsuchenden Listen gelöscht werden. Das selbe machst du dann mit der 2. Spalte und so veringert sich die zu durchsuchende Menge immer weiter, bis nur noch genau ein Wert in der Menge vorhanden ist. Das ist dann der Treffer / bzw. gesuchte Wert.

Wäre es nicht schön einfach wenn die Tabelle in einer DB abgebildet wäre? Geht aber leider leider nicht. :?

@SlaterB

Die "Suchanfragen setzen sich zur Laufzeit aus User-Angaben zusammen. Ich weiss also vor der User-Eingabe nicht welche Spalte den zu suchenden Wert enthält, bzw. aus welchen 3 Spalten sich der 4 Wert indentifzieren lässt.
Wie soll ich drei Strings zu einem Indexstring zusammenfügen, wenn ich noch nicht weiss aus welchen drei String sich der Index ergibt?

Hat jemand eine weitere Idee :?:
 
S

SlaterB

Gast
nun mal halblang, bleiben wir bei deinen Beispiel
A|B|D|E
1|1|1|0
1|0|1|0
0|0|1|5

wenn nun A =1, D = 1 und E = 0 gegeben sind, welche B ist dann gesucht, 0 oder 1?
oder ist das nur eine schlechte Beispieltabelle?
sind 3 Werte immer eindeutig?

und vor allem: weißt du die Spalten zu jedem Wert oder hast
du in beliebiger Reihenfolg drei lose Index-Werte gegeben?

sind denn die Wertebereiche jeder Spalte unterschiedlich oder gibts da Überlappungen?


na egal wie es ist, du brauchst dann jedenfalls eine Map, die von allen möglichen Key-Kombinationen auf den fehlenden Wert mappt,
bei Reihenfolge der Keys ist das recht einfach

key1#key2#key3# -> Wert 4
oder auch
key1##key3#key4 -> Wert 2

wenn die Spalten zu den Werten nicht gegeben sind, dann müssen sie ja eigentlich alle eindeutig sind,
dann sortierst du die Keys alphabetisch und hast so aus 3 Werten immer genau einen Key für die Map

--------

für n Zeilen und 4 Spalten hast du eine Map der Größe 4n,
das geht ja noch
 
G

Guest

Gast
@SlaterB

ja die Tabelle ist schlecht!
3 Werte sind immer eindeutig!

ja, ich kenne die Spalten zu jedem Wert.

Die Werte-Bereiche der verschiedenen Spalten sind überlappend.

Ich glaub ich werd um eine komplexe Map nicht herumkommen.

Danke für die Antworten! Tolles Forum!

Ich wünsche noch einen schönen Abend!

Ps. kann die Diskussion leider nicht schließen da ich nicht registriert bin, vielleicht kanns ja jemand für mich machen.
 
S

SlaterB

Gast
denkbar wäre noch, wie die DB mehrere einzelne Indexe zu führen und deren Ergebnisse zu vergleichen,
macht die Keys kürzer, dürfte also Platz sparen und man muss auch nicht ständig Keys zusammenbauen,

was schneller ist steht noch aus,
bei Benutzereingaben ist aber Performance wohl egal, solange man nicht die Liste Element für Element durchlaufen muss
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J JTextPane "text/html" grafik implementieren... Java Basics - Anfänger-Themen 9
Maxq Klassen Actionen in Button implementieren Java Basics - Anfänger-Themen 6
A LinkedList implementieren Java Basics - Anfänger-Themen 32
_so_far_away_ Inventarisierungssystem brauche switch Cases und weiß nicht, wie ich e implementieren muss Java Basics - Anfänger-Themen 5
new_to_coding Rekursive Reihe implementieren Java Basics - Anfänger-Themen 1
HolyFUT Javax Websocket API implementieren Java Basics - Anfänger-Themen 14
J Interface Interface korrekt implementieren Java Basics - Anfänger-Themen 5
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
P9cman Ampel in Java implementieren Java Basics - Anfänger-Themen 3
districon Generics implementieren Java Basics - Anfänger-Themen 2
W UML Diagramm implementieren Java Basics - Anfänger-Themen 2
tony241188 Implementieren Sie die Klasse Hersteller, welche die folgenden Elektrogeräte produziert Java Basics - Anfänger-Themen 3
R Taxistand Implementieren Java Basics - Anfänger-Themen 1
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
Gaudimagspam BMI in Java implementieren Java Basics - Anfänger-Themen 38
T Methode implementieren Java Basics - Anfänger-Themen 21
R Implementieren einer iterativen und rekursiven Klassenmethode. Java Basics - Anfänger-Themen 1
L Methode implementieren, Parameter die übergeben werden sind final Java Basics - Anfänger-Themen 4
J alternierendes Probing-Verfahren für Hash-Tabellen implementieren Java Basics - Anfänger-Themen 0
B UML-Klassendiagram get und set implementieren Java Basics - Anfänger-Themen 2
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10
E Klassen implementieren Java Basics - Anfänger-Themen 94
S Tokenizer selbst implementieren Java Basics - Anfänger-Themen 1
C Telefonliste mit interface implementieren Java Basics - Anfänger-Themen 30
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 8
M WindowStateListener selbst implementieren Java Basics - Anfänger-Themen 8
J Algorithmus für eine Reihe implementieren Java Basics - Anfänger-Themen 2
F Kindklassen sollen Ihre Methoden selbst implementieren Java Basics - Anfänger-Themen 5
pkm Interface Funktionales Interface lässt sich nicht implementieren. Java Basics - Anfänger-Themen 2
N Verkettete Liste implementieren Java Basics - Anfänger-Themen 5
N Stacks und Queues Implementieren Java Basics - Anfänger-Themen 2
R Listen richtig implementieren Java Basics - Anfänger-Themen 3
Shizmo Methoden Formel besser implementieren Java Basics - Anfänger-Themen 8
X Polynome implementieren Java Basics - Anfänger-Themen 3
O Methoden implementieren, Sichtbarkeiten, Brüche Java Basics - Anfänger-Themen 104
D Erste Schritte Weitere Befehle implementieren Java Basics - Anfänger-Themen 27
D Erste Schritte Befehl back implementieren Java Basics - Anfänger-Themen 18
B Formel in Java implementieren Java Basics - Anfänger-Themen 4
M Suchbaum implementieren Java Basics - Anfänger-Themen 8
S Implementieren zweier Klassen Java Basics - Anfänger-Themen 5
Hacer Interfaces implementieren Java Basics - Anfänger-Themen 7
C Zyklisch verkette Liste - Pop() methode implementieren Java Basics - Anfänger-Themen 2
N Eigene Stream Methoden implementieren Java Basics - Anfänger-Themen 3
L LinkedList Comparable < > MEHRFACH implementieren? Java Basics - Anfänger-Themen 3
K Klassen implementieren Java Basics - Anfänger-Themen 7
W Neue Klassenmethode implementieren.. Java Basics - Anfänger-Themen 6
U Datentypen Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 13
C UML Diagramm in Java implementieren-Korrektur Java Basics - Anfänger-Themen 8
T Equal Methode implementieren Java Basics - Anfänger-Themen 22
C ZahlenMuster implementieren Java Basics - Anfänger-Themen 1
C Alte Klausuraufgabe - UML in Java implementieren Java Basics - Anfänger-Themen 1
D Erste Schritte spielfeld als Datenspeicher implementieren Java Basics - Anfänger-Themen 1
D spielfeld als Datenspeicher implementieren Java Basics - Anfänger-Themen 5
J Builder Pattern implementieren Java Basics - Anfänger-Themen 3
B Sortierte Liste implementieren Java Basics - Anfänger-Themen 3
L Liste mittels Stack implementieren Java Basics - Anfänger-Themen 0
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
D Weihnachtsbaum implementieren gescheitert. Java Basics - Anfänger-Themen 2
D Tannenbaum implementieren gescheitert Java Basics - Anfänger-Themen 1
D Interface Interfaces und abstrakte Klassen implementieren Java Basics - Anfänger-Themen 4
F ArrayListen auf anderer Klasse implementieren Java Basics - Anfänger-Themen 4
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
D Methoden Implementieren von einer Zoomfunktion innerhalb eines JPanels mit null-Layoutmanager Java Basics - Anfänger-Themen 1
G Erbklasse verpflichten Methode zu implementieren Java Basics - Anfänger-Themen 3
D Algorithmus zu gegebener Laufzeit implementieren Java Basics - Anfänger-Themen 1
G einfache Leet-Übersetzung implementieren und benutzen Java Basics - Anfänger-Themen 14
B Binärbaum mit java implementieren! Java Basics - Anfänger-Themen 5
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
D Exception selbst Implementieren Java Basics - Anfänger-Themen 1
T QuickSort implementieren Java Basics - Anfänger-Themen 5
J Konstruktor implementieren, zahl 0 repräsentieren Java Basics - Anfänger-Themen 4
C Frage zum Kartenspiel implementieren Java Basics - Anfänger-Themen 9
shiroX OOP Java Funktion implementieren Java Basics - Anfänger-Themen 3
T Ampel implementieren Java Basics - Anfänger-Themen 12
S Interface Implementieren von Methoden aus einer Klasse in eine GUI Java Basics - Anfänger-Themen 6
H Methoden Implementieren "Drücken Sie eine beliebige Taste" Java Basics - Anfänger-Themen 5
G ActionListener implementieren Java Basics - Anfänger-Themen 12
G Szenario implementieren Java Basics - Anfänger-Themen 7
T Methode Implementieren Java Basics - Anfänger-Themen 15
I Taschenrechner - Methoden implementieren Java Basics - Anfänger-Themen 5
T Interface implementieren mit Abstrakten Typen? Java Basics - Anfänger-Themen 4
T Interface Implementieren Java Basics - Anfänger-Themen 5
T Methoden Wie compareTo() Methode implementieren? Java Basics - Anfänger-Themen 9
D Artikel-Suche implementieren Java Basics - Anfänger-Themen 7
S Implementieren? Java Basics - Anfänger-Themen 9
R Alle Klassen ermitteln, die Interface implementieren / Reflection Java Basics - Anfänger-Themen 51
P einen binärbaum implementieren Java Basics - Anfänger-Themen 4
K Terminplaner implementieren Java Basics - Anfänger-Themen 49
F JSlider korrekt implementieren Java Basics - Anfänger-Themen 19
D Wie Iterator Remove implementieren? Java Basics - Anfänger-Themen 11
U Automatenprüfung in Java implementieren — String Vergleich klappt nicht Java Basics - Anfänger-Themen 40
V Hilfe beim implementieren von Iterator Java Basics - Anfänger-Themen 5
T Vorbereitung für das Implementieren von Programmen Java Basics - Anfänger-Themen 3
B PriorityQueue im dijkstra Algorithmus implementieren Java Basics - Anfänger-Themen 4
H Automaten implementieren Java Basics - Anfänger-Themen 9
M Methoden implementieren? Java Basics - Anfänger-Themen 8
S Klasse als Attribut implementieren Java Basics - Anfänger-Themen 2
A Proxy Pattern implementieren Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben