Portal > Foren > Java > Allgemeine Java-Programmierung > Wie bilde diese PHP Struktur in JAVA ab?
Antwort
 
Themen-Optionen
Alt 19.03.2008, 18:27 Nach oben    #1
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 279
Standard Wie bilde diese PHP Struktur in JAVA ab?

Hallo,

Ich habe ein Problem. Ich blicke bei den ganzen Java Datenstrukturen einfach nicht durch. Hab schon einiges wie Vectoren, HashMaps, ArrayLists, etc. getestet, aber irgendwie hat jede Datenstruktur ihre Vor- und Nachteile und ich weiß einfach nicht was für mich angebracht ist.

Da ich etwas mit CSS machen muss was ich in PHP ruckzuck hinkriegen würde, brauche ich in JAVA dafür recht lange, weil ich nicht weiß welche Datenstruktur das abdeckt was ich brauche.

Hier ist die Datenstruktur in php so wie ich sie machen würde:

Code:
Array
(
    [0] => Array
        (
            [name] => element2
            [properties] => Array
                (
                    [0] => color
                    [1] => border
                    [2] => margin
                )

            [values] => Array
                (
                    [0] => red
                    [1] => 2px solid blue
                    [2] => 0
                )

        )

    [1] => Array
        (
            [name] => element1
            [properties] => Array
                (
                    [0] => color
                    [1] => border
                    [2] => margin
                )

            [values] => Array
                (
                    [0] => white
                    [1] => 1px solid black
                    [2] => 5em
                )

        )

)
Wie kann ich sowas in Java abbilden unter der Voraussetzung, das anhand eines Elementnamens alle Properties und/oder Values ausgelesen werden können?

Ich hatte versucht die Elementnamen in einer ArrayList zu speichern und die Properties und Values in zwei 2 HashMaps mit dem Key Elementnamen allerdings war das sehr kompliziert und hat auch nicht geklappt. Ich glaube auch das ich sowas wie generics nicht einsetzen kann wegen der gegebenen jre.

Geändert von ex³ (19.03.2008 um 18:29 Uhr).
ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.03.2008, 18:43 Nach oben    #2
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 521
Standard

also generics sind ein nettes feature neuerer JREs, aber sie sind nicht zwingend nötig! Auch ohne Java 5 kann man eben mit nicht-generischen Collections arbeiten und muss dazu halt nur die Rückgabewerte entsprechend auf den richtigen Datentyp casten. In deinem Fall wären Generics eigentlich auch nicht so gut anwendendbar, weil die werte der map ja ein String der Array aus Strings sein kann.

Die von dir dargestellte Struktur könnte in Java so erzeugt werden:
java Code:
  1. List array = new ArrayList();
  2. Map item = new HashMap();
  3. item.put("name", "element2");
  4. item.put("properties", new String[] {"color", "border", "margin"});
  5. item.put("values", new String[]{"red", "2px solid blue", "0"});
  6. item.put("values", "");
  7. array.add(item);
  8. item = new HashMap();
  9. item.put("name", "element1");
  10. item.put("properties", new String[] {"color", "border", "margin"});
  11. item.put("values", new String[]{"white", "1px solid black", "5em"});
  12. array.add(item);

Aber eigentlich sind solche Verwendungen in Java eher selten, weil die objektorientierte Architektur ganz andere Möglichkeiten bietet, vielleicht solltest du besser versuchen, diese Struktur in eigenen Datentypen abzubilden.
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.03.2008, 18:47 Nach oben    #3
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.180
Standard

Ähm also auf den ersten Block würde ich mir da, wenn man die erste Ebene weglassen kann und die Element-Namen eindeutig sind sowas basteln:

Code:
HashMap<String,HashMap<String,String>>
der erste String als Name des Elements und dazu dann jeweils ne weitere Hasmap die direkt property und value hat.

Hier mal ein Beispiel

Code:
HashMap<String,HashMap<String,String>> Liste = new HashMap<String,HashMap<String,String>>();
HashMap<String,String> element = new HashMap<String,String>();

element.put("color", "white");
element.put("border", "1px solid black");
element.put("margin", "5em");

Liste.put("element1",element );

element = new HashMap<String,String>();
element.put("color", "red");
element.put("border", "2px solid blue");
element.put("margin", "0");

Liste.put("element2",element );

for (Iterator<String> it = Liste.keySet().iterator(); it.hasNext();-) {
	String ElementName = it.next();
	System.out.println("Element: " + ElementName + ": ");
	for (Iterator<String> it2 = Liste.get(ElementName).keySet().iterator(); it2.hasNext();-) {
		String PropertyName = it2.next();
		System.out.println("   " + PropertyName + ": " + Liste.get(ElementName).get(PropertyName));
	}
	
}
System.exit(0);
Ausgabe:

Code:
Element: element2: 
	   color: red
	   margin: 0
	   border: 2px solid blue
Element: element1: 
	   color: white
	   margin: 5em
	   border: 1px solid black
mfg
robo47
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.03.2008, 21:21 Nach oben    #4
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 279
Standard

Zitat:
Aber eigentlich sind solche Verwendungen in Java eher selten, weil die objektorientierte Architektur ganz andere Möglichkeiten bietet, vielleicht solltest du besser versuchen, diese Struktur in eigenen Datentypen abzubilden.
Ja das dachte ich mir auch. Wenn ich zwei neue Objekte einbauen würde wie etwa ein CssElement oder ElementProperty wäre das einfacher zu machen.

@Robo
ich kann keine generics einsetzen.
ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.03.2008, 23:22 Nach oben    #5
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.180
Standard

Zitat:
Zitat von ex³ Beitrag anzeigen
[
@Robo
ich kann keine generics einsetzen.
ah dann weis ich jetzt was in JAVA die generics sind
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.03.2008, 09:29 Nach oben    #6
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 523
Standard

Wie wärs mit nem Tree?
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Komme von PHP will JAVA Anwendung bauen ex³ Allgemeine Java-Programmierung 12 14.12.2007 15:17
java applet variablen an php skript übergeben nibblas Desktop-Applikationen und Grafik 6 30.10.2007 15:20
Java Applet soll Daten an ein PHP Script senden flanger Allgemeine Java-Programmierung 5 16.05.2007 16:52
[BUCH] Java ist auch eine Insel kampet Literatur 5 22.02.2005 14:40
Geschwindigkeit Java vs php DrachenKaiser Allgemeine Java-Programmierung 16 16.07.2004 19:25


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:20 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44