Vergleichen von Datensätzen

Status
Nicht offen für weitere Antworten.

daNny

Aktives Mitglied
Hallo Ihr da draussen! :D

Ich wollte mich nun einmal in die Java-Welt begeben und mir so einmal ein Programm programmieren, welches ich hin und wieder mal gebrauchen könnte. Das hätte also nicht nur den Vorteil, dass ich auch mal mit Java etwas realisieren kann, sondern auch gleich einen praktischen Nutzen. Es geht also um folgendes:

Ich habe mehrere Excel-Tabellen, in denen Daten stehen. Diese sehen z.B. ungefähr so aus:

Tabelle1
Name | Email | Punkte | ... (weitere Spalten)
Bert | bert@yahoo.de | 10 | ...
Ernie | ernie@gmx.de | 9 | ...
Oscar | o@tonne.de | 11 | ...

Tabelle2
Email | Name | Punkte | ... (weitere Spalten)
Ernie | ernie@gmx.de | 9 | ...
Bert | bert@yahoo.de | 20 | ...
Kermit | kermit@frosch.de | 11 | ...

Die Tabellen können also ungefähr so aussehen.
Das auslesen in Java stellt auch garkein Problem dar. Habe mir jetzt JExcel ein wenig angeschaut, sodass ich damit klar komme.

Ich möchte diese unterschiedlichen Datensätze nun filtern, d.h., ich gebe eine Spalte an, die mir sozusagen als Schlüsselspalte dienen soll, was z.B. der Name wäre. Jetzt können folgende Fälle auftreten:

  • Der Name existiert in beiden Tabellen
  • Der Name existiert in Tabelle1
  • Der Name existiert in Tabelle 2

Wenn der Name nur in einer Tabelle existiert, sollen die Daten nun quasi in eine Liste eingetragen werden "Existiert nur in Tabelle1", "Existiert nur in Tabelle2".

Gibt es den Namen in beiden Tabellen, so sollen die Datensätze in eine weitere Liste eingetragen werden. Und genau diese Datensätze möchte ich nun weiter untersuchen, d.h. sagen "Untersuche, ob der Wert von Spalte 3 (Punkte) aus Tabelle1 mit dem von SPalte 3 aus Tabelle 2 übereinstimmt.

Die Frage die sich mir nun stellt ist, wie ich das ganze angehen soll. Ich habe mir zunächst überlegt, eine einzelne Klasse "Datensatz" anzulegen, die ein Array aus Strings beinhaltet, wo jedes Arrayelement dann der spalte einer Zeile entsprechen würde. Dann würde ich eine Collection, z.B. eine ArrayList aus diesen Datensätzen erstellen. Somit wäre dann der Inhalt aus einer Exceltabelle in einer ArrayList von Datensätzen. Das kann man dann natürlich für alle Dateien so machen, sodass jede Tabelle einer ArrayList<Datensatz> entsprechen würde.

Ist dieses Vorgehen wohl erstmal schlau? Ich möchte die einzelnen Datensätze dann natürlich vergleichen mit denen aus anderen ArrayListen. Ich müsste halt erstmal einen Ansatz finden, wie ich an dieses Problem rangehen könnte.

Ich hoffe, ich habe mich ansatzweise klar ausgedrückt.
 
G

Gast

Gast
Datensatz muß ja nicht unbedingt ein Array aus Strings beinhalten.
Könnte ja auch die Strings Name, emailAdresse, etc haben, (Hilfreich um diesen Datensatz weiterzuverwenden). Das andere wäre generischer.

Hier würde ich dann empfehlen equals zu überschreiben.

Naja für jede Tabelle eine ArrayList erstellen die dann im Speicher rumliegt, kann bei vielen Tabellen und grossen Tabellen störend wirken (wenn's nur die Sesamstrasse ist sollte das allerdings kein Problem darstellen).

Statt ArrayList, evtl HashSet verwenden. (keine Duplikate, Suchen über den Hash möglich)

Dafür dann aber nicht vergessen in Datensatz auch hashCode überschreiben (Diesen würde ich dann nur vom PrimärSchlüssel abhängig machen).

Eine andere Möglichkeit wäre eine Map zu erstellen in die der Datensatz eingetragen wird (Key), und eine Liste oder ein Set von Tabellen in denen dieser Datensatz vorkommt.

Code:
for(Datensatz datensatz : datensätzeauslesenausTabelle(tabelle))
{
if(hashmap.get(datensatz)==null){
Set set = new HashSet();
hashmap.put(datensatz, set);
}
hashmap.get(datensatz).add(tabelle);
}

Auswertungen dann entweder on the fly machen oder zwischencachen.
 

daNny

Aktives Mitglied
Schonmal danke für deine Antwort.

Hatte am Anfang auch daran gedacht, die einzelnen Werte eines Datensatz in Objekt-Eigenschaften zu speichern, aber dann tritt ja das Problem auf, dass ich vorher nicht genau weiß, wieviele Spalten die Tabelle hat. Somit weiß ich dann auch leider nicht alle Attribute, die ich in der Klasse definieren muss. Deswegen dachte ich dann daran, dem Datensatz einfach als Attribut ein String-Array zu geben, welches dann die Spalten der Tabellenzeile beinhaltet.

Ich denke, dass ich mich wohl ein wenig mit den Collections befassen sollte.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ü Arrays vergleichen Allgemeine Java-Themen 59
Ü Methoden Arrays vergleichen - Methode Allgemeine Java-Themen 1
D Zwei Listen vergleichen Allgemeine Java-Themen 7
F 2 JsonArray vergleichen, geht es auch einfacher ? Allgemeine Java-Themen 3
N String vergleichen. Allgemeine Java-Themen 27
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
Aboya Char Array rekursiv vergleichen Allgemeine Java-Themen 15
Curtis_MC Pointer mit ArrayList vergleichen Allgemeine Java-Themen 6
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
D Erste Schritte Arrays vergleichen und die zahlen die nur einmal vorkommen ausgeben Allgemeine Java-Themen 5
E Elemente innerhalb einer ArrayList vergleichen Allgemeine Java-Themen 33
R Optimierung beim Vergleichen von 2 Bildern Allgemeine Java-Themen 23
CptK Input/Output Buttonwerte vergleichen Allgemeine Java-Themen 5
J Mockito - Objekte miteinander vergleichen (equals) Allgemeine Java-Themen 6
Meeresgott Best Practice Strings auf Inhalte vergleichen Allgemeine Java-Themen 1
N DNA Strings vergleichen Allgemeine Java-Themen 1
C Input/Output Textdateien vergleichen Allgemeine Java-Themen 3
M Dateien nach kopieren vergleichen Allgemeine Java-Themen 9
KeVoZ_ JSoup - Website Inhalt/Element mit String vergleichen Allgemeine Java-Themen 2
K Eingabe mit Char vergleichen klappt nicht! Allgemeine Java-Themen 2
AssELAss Best Practice Checksumme über jede Spalte zweier Tabellen und vergleichen Allgemeine Java-Themen 3
AssELAss Zwei Arrays / ArrayLists inhaltlich vergleichen Allgemeine Java-Themen 2
W Variablen Dates vergleichen Allgemeine Java-Themen 7
A Collections Inhalt einer Liste mit Inhalt anderer Liste vergleichen ? Allgemeine Java-Themen 7
J Farben mit comparing vergleichen Allgemeine Java-Themen 3
Dechasa Java 8 - Datum vergleichen Allgemeine Java-Themen 5
S Zwei String vergleichen, Fehler markieren Allgemeine Java-Themen 3
Dechasa Vergleichen von zwei Arrays Allgemeine Java-Themen 4
H Strings vergleichen Allgemeine Java-Themen 9
Y inhalte aus 2 unterschiedlichen Arrays miteinander vergleichen Allgemeine Java-Themen 12
D Pattern mit Pattern vergleichen Allgemeine Java-Themen 3
2 Joda Time - Localtime mit anderer Zeit vergleichen? Allgemeine Java-Themen 1
A Kann String nicht vergleichen (Android) Allgemeine Java-Themen 4
F Zwei LinkedHashMaps iterieren und vergleichen Allgemeine Java-Themen 2
D Variablen java.io.File zum vergleichen abspeichern Allgemeine Java-Themen 1
7 6 int variablen vergleichen Allgemeine Java-Themen 34
E Lesen von mehrere Csv-Datei und ihre Inhalte vergleichen Allgemeine Java-Themen 3
R Int werte vergleichen und Anzahl Paare ausgeben Allgemeine Java-Themen 4
OnDemand Spalten vergleichen Java Allgemeine Java-Themen 25
C Rechenzeit verschiedener Algorithmen vergleichen Allgemeine Java-Themen 4
OnDemand Dateien einlesen und vergleichen Allgemeine Java-Themen 1
L Zwei Files miteinander vergleichen und Grafisch darstellen Allgemeine Java-Themen 1
S String vergleichen Allgemeine Java-Themen 1
T Zwei Wortendungen vergleichen ohne .equals Allgemeine Java-Themen 10
N Variablen Positionen vergleichen ??? Allgemeine Java-Themen 2
A Bilder vergleichen auf gleichheit oder ähnlichkeit Allgemeine Java-Themen 8
J XML Dateien vergleichen Allgemeine Java-Themen 9
X Collections Hashmaps vergleichen Allgemeine Java-Themen 23
BRoll Image RGB Werte auslesen und vergleichen Allgemeine Java-Themen 8
S Zwei Comparable (compareTo) vergleichen Allgemeine Java-Themen 6
A PDF Content vergleichen Allgemeine Java-Themen 3
M Datentypen Referenzen oder seperate IDs vergleichen? Allgemeine Java-Themen 6
D Strings vergleichen; Komma ignorieren Allgemeine Java-Themen 3
J String nur erste Zeichen vergleichen Allgemeine Java-Themen 6
S Reports vergleichen Allgemeine Java-Themen 8
V ArrayList vergleichen mit .equals? Allgemeine Java-Themen 13
T Wörter Vergleichen Allgemeine Java-Themen 3
T Uhrzeiten vergleichen Allgemeine Java-Themen 4
P JAVA Bilder/Videos in Form von Files vergleichen Allgemeine Java-Themen 7
S Strings vergleichen Allgemeine Java-Themen 11
9 Dateinamen erfassen und vergleichen Allgemeine Java-Themen 6
S String Zeichen für Zeichen vergleichen Allgemeine Java-Themen 4
D String mit Wörterbuch vergleichen Allgemeine Java-Themen 12
I Input/Output Zeichenkette eingeben und vergleichen Allgemeine Java-Themen 2
Landei Hilfsklasse zum Vergleichen Allgemeine Java-Themen 5
S Datum vergleichen - ohne Hilfsmittel Allgemeine Java-Themen 8
1 zwei Strings vergleichen Allgemeine Java-Themen 16
F Vergleichen von Datumswerten Allgemeine Java-Themen 3
S Ergebnis von Cursor c1 mit Cursor c2 vergleichen Allgemeine Java-Themen 3
G Zwei bytes vergleichen Allgemeine Java-Themen 2
S Fixe Zahlen vergleichen Allgemeine Java-Themen 4
M Zeitangaben vergleichen Allgemeine Java-Themen 2
MonsterBit 2 Werte aus 2 Array vergleichen Allgemeine Java-Themen 10
1 String mit contains vergleichen (ignore case) Allgemeine Java-Themen 2
Developer_X Problem mit String vergleichen Allgemeine Java-Themen 3
Z zwei Daten vergleichen Allgemeine Java-Themen 4
nrg Leere Objektreferenz mit != null vergleichen Allgemeine Java-Themen 4
ARadauer PDF Vergleichen Allgemeine Java-Themen 16
S Alle Elemente von zwei Listen vergleichen Allgemeine Java-Themen 10
O Probleme beim vergleichen von 2 Datumsangaben Allgemeine Java-Themen 2
N 2 files auf gleichheit vergleichen Allgemeine Java-Themen 5
V Datum vergleichen Allgemeine Java-Themen 7
T Shapes vergleichen? Zeichen erkennen? Allgemeine Java-Themen 7
S Datei auf Server mit lokaler Datei vergleichen Allgemeine Java-Themen 4
M Warum Strings mit equals vergleichen... Allgemeine Java-Themen 6
G Datum vergleichen Allgemeine Java-Themen 5
A zwei listen vergleichen und unterschiede anzeigen Allgemeine Java-Themen 3
J Inhalt von HashMap vergleichen Allgemeine Java-Themen 3
S Anfänger: 2 Objekte vergleichen? Allgemeine Java-Themen 8
Y Mal wieder vergleichen von Strings.[Leider noch ein Problem] Allgemeine Java-Themen 18
K zipdatei mit txtdatei vergleichen Allgemeine Java-Themen 9
S 2 URIs vergleichen Allgemeine Java-Themen 4
C Viele Informationen aus zwei Collections vergleichen Allgemeine Java-Themen 2
QDog beliebige Objekte vergleichen Allgemeine Java-Themen 2
G schnell Strings vergleichen Allgemeine Java-Themen 4
V Zwei ArrayList(s) vergleichen Allgemeine Java-Themen 6
M Name von Wochentagen vergleichen Allgemeine Java-Themen 3
J Dateien binär vergleichen Allgemeine Java-Themen 8
J Datei Inhalt vergleichen (schnell & effizient!) Allgemeine Java-Themen 10
P Bit für Bit vergleichen Allgemeine Java-Themen 15

Ähnliche Java Themen

Neue Themen


Oben