![]() |
| | LinkBack | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Erfahrener Benutzer Registriert seit: 16.08.2008 Ort: Mecklenburg-Vorpommern
Beiträge: 314
|
Hallo Gemeinde, wie hier ArrayList und Iterator besprochen, habe ich nun mal einen Fall aus der realen Welt. Folgende Situation: Ich habe eine Reihe von Werten in einer Datenbank. Beispielsweise: ID Name Gruppe 1 Alfred 5 2 Herbert 5 3 Joey 5 4 Marta 1 ... Ich möchte nun die Mitglieder einer bestimmten Gruppe auslesen und in eine Datei speichern. In PHP hätte ich jetzt einfach folgendes gemacht: Ich hätte ein Array initiiert, dieses enthält die Gruppen_ID. In dieses Array schreibe ich nun ein weiteres Array, welches die Namen enthält. PHP-Code: HashMap<String, ArrayList> -> String ist die ID (nein, kein Designfehler, der String ist beabsichtigt, da ich nicht mit Zahlen arbeite) und in die ArrayList füge ich meine Werte ein. Dabei schaukle ich hin und her. Zur Erklärung rowSyn: entspricht der Gruppennummer rowVal: ist eine ArrayList, die alle Namen zu dieser Gruppennummer enthält Code: while(result.next())
{
String rowSyn;
rowSyn = result.getString("syn");
ArrayList rowVal = new ArrayList(10);
rowVal.add(result.getString("name"));
while(result.next() && result.getString("syn").equals(rowSyn))
{
rowVal.add(result.getString("name"));
//nach vorne "schaukeln" -> gehört der nächste Datensatz noch zur aktuellen Gruppe?
if(result.next() && result.getString("syn").equals(rowSyn))
{
//wenn ja: tu nichts und schaukle wieder zurück.
result.previous();
}
else
{
//wenn nicht: füge unsere Gruppe und die Namen hinzu -> schaukle zurück
synMap.put(rowSyn, rowVal);
result.previous();
break;
}
}
Ist das the Java-way? |
| | |
| | Nach oben #2 |
| Johannes Müller Registriert seit: 15.09.2005 Ort: Königreich Flieden
Beiträge: 695
|
Grundsätzlich ist das der Java-Way, aber irgendwie ein bischen verkompliziert... Dieses Vor- und Zurück-"Schaukeln" is gar kein guter Stil, da kommt es schnell zu fehlern! java Code:
__________________ Weißt Bescheid - Scheiß wie weit |
| | |
| | Nach oben #4 |
| fka Gottzilla Registriert seit: 02.02.2005 Ort: Würzburg
Beiträge: 754
|
Ich weiß, du hasst mich, aber ich hasse solche ArrayList in HashMap Konstrukte ;) . Möchtest du folgende Struktur: Code: Datenstruktur | +-Gruppe 1 | | | +--ID/Name | | | +--ID/Name | +-Gruppe 2 | +--ID/Name Code: Datenstruktur | +-Gruppe 1 | | | +--Name | | | +--Name | +-Gruppe 2 | +--Name |
| | |
| | Nach oben #5 |
| fka Gottzilla Registriert seit: 02.02.2005 Ort: Würzburg
Beiträge: 754
|
Hm ... irgendwie ist da ein Teil von meinem Beitrag verschwunden Was ich noch sagen wollte: Falls der zweitere von meinen Szenarien zutreffen sollte, dann wäre das aber eine andere Struktur als die, die ich in deinem Link kritisiert habe. HashMap<String, ArrayList<String>> könnte ich mich mit zufrieden geben. Wäre die Struktur aber synonym zu meinem ersten Szenario (und somit auch zu der aus deinem Link), würde die Datenstruktur folglich so aussehen: HashMap<String, ArrayList<String[]>>, dann hätte ich dagegen etwas einzuwenden. Also falls du deinen Code später auf das erste Szenario ausbauen möchtest, müssen wir über die Struktur noch einmal reden. Falls du ständig bei dem zweiten Szenario bleiben möchtest, nicke ich das mal so ab ;) . |
| | |
| | Nach oben #6 | |
| Erfahrener Benutzer Registriert seit: 16.08.2008 Ort: Mecklenburg-Vorpommern
Beiträge: 314
| Zitat:
Ich möchte so etwas, wie die zweite Datenstruktur hergibt. Die Daten werden aus einer SQL-Tabelle geladen. Ziel der Arbeit ist es, diese schnell aus dem ResultSet in einen Behälter (in diesem Fall eine HashMap) zu laden. Einmal getan, kann ich diese HashMap wieder der Reihe nach auslesen, um sie entweder in eine Datei zu schreiben oder anderweitig in anderen Objekten weiterzuverwenden. Mit andern Worten: Der Schwerpunkt liegt darauf, dass ich die Gruppen/Namen schnell speichern und der Reihe nach wieder auslesen kann. In der ArrayList/HashMap etc. muss nichts gesucht werden. Jetzt bin ich gespannt! :) EDIT: Ich habs gemerkt ;). Ich bleibe ausschließlich beim zweiten Szenario. Aus reiner Neugier: Wie wärs denn im ersten Fall Best Practice? Geändert von Sekundentakt (19.01.2010 um 08:15 Uhr) | |
| | |
| | Nach oben #7 |
| fka Gottzilla Registriert seit: 02.02.2005 Ort: Würzburg
Beiträge: 754
|
Bei zweiteren solltest du dir eine eigene Klasse mit den Attributen anlegen: Code: public class Person {
private String id;
private String name;
// Getter/Setter
}
Generell lässt sich natürlich darüber streiten, ob nicht auch eine eigene Klasse für die Gruppen sinnvolle wäre Code: public class Group {
private String id;
private ArrayList<Person> people = new ArrayList<Person>();
// Getter/Setter für id
public void addPerson(Person p) {
people.add(p);
}
public void removePerson(Person p) {
people.remove(p);
}
}
Geändert von The_S (19.01.2010 um 15:35 Uhr) Grund: Tippfehler ausgebessert => HashMap<String, ArrayList<Group>> wird zu HashMap<String, Group> |
| | |
| | Nach oben #8 | |
| Johannes Müller Registriert seit: 15.09.2005 Ort: Königreich Flieden
Beiträge: 695
| Zitat:
Der jeweilige Datencontainer (wie die angesprochene Klasse Person) kann selbstverständlich nach belieben gewählt werde, da im Beispiel nur der Name gegeben war, hab ich das ganze darauf vereinfacht, einen String zu verwenden.
__________________ Weißt Bescheid - Scheiß wie weit | |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Verständnisproblem: Tabelle aus mehrdimensionalem Array erstellen | la-finest | PHP-Programmierung | 3 | 30.09.2009 17:08 |
| Kummunikation zwischen PHP Und einem "Java Server" | Avaris | Anwendungsdesign / Softwarearchitektur | 25 | 07.12.2008 16:23 |
| PHP 5.1.5, PHP 4.4.4 und PHP 5.2.0 RC2 veröffentlicht | Ben | Nachrichten | 2 | 01.09.2006 16:05 |
| Array in Bezug auf ein anderes sortieren... | code5 | PHP-Programmierung | 2 | 15.05.2006 15:56 |
| Neue PHP "release candidates": PHP 4.4.2 RC 1 und PHP 5.1 RC 6 | Ben | Nachrichten | 1 | 21.11.2005 20:48 |