Geht das vielleicht noch einfacher?

Status
Nicht offen für weitere Antworten.

Titanpharao

Bekanntes Mitglied
Hi ich habe einen Algo geschrieben der eine XML Datei ausliest, und diese dann in das Format XSD bringt.
schaut einfach mal drüber..problem ist je mehr Tags es sind desdo länger dauert es richtig lange...

Achso der Algo verhindert "dopplung"
Also zum Beispiel.

<person>
<name>X</name>
<name>Y</name>
</person>

Es darf nur ein mal name vorkommen. Die Datensätze interessieren dabei nicht.

Code:
          if(currentNode==null){
          xsdschema.add(new XSD(newNode,nr,0));
          }
          else{
        	  int anz=xsdschema.size();
        	  for(int x=0;x<anz;++x){
        		  if(newNode.equals(xsdschema.get(x).dmtn))set=false;
        	  }
        	  if(set)
              for(int i=0;i<anz;++i){
            	  if(currentNode.equals(xsdschema.get(i).dmtn)){
            		  for(int j=i;j<anz;++j){
            			  if(newNode.toString().equals(xsdschema.get(j).dmtn.toString())&&xsdschema.get(j).vaterele==i){
            				set=false;	  
            			  }
            		  } 
   					  if(set){
   						  nr++;
   						  xsdschema.add(new XSD(newNode,nr,i));
   					  }
            		  break;
            	  }
              }       
          }

import javax.swing.tree.DefaultMutableTreeNode;

public class XSD{
	public DefaultMutableTreeNode dmtn;
	public int elenr;
	public int vaterele;
	public XSD(DefaultMutableTreeNode dmtn, int elenr, int vaterele) {
		this.dmtn=dmtn;
		this.elenr = elenr;
		this.vaterele = vaterele;
	}
}
 
S

SlaterB

Gast
allgemeiner Tipp: verwende Maps,
speichere die xsdschema.get(i).dmtn in einer HashMap,

dann bekommst du mit

gleicherXSDNode = map.get(newNode/ currentNode);
in einem Schritt den passenden Node, falls vorhanden,

wenn es mehrere gibt (was bei deinem break; nicht so aussieht), dann eine Liste in der Map speichern
 

Titanpharao

Bekanntes Mitglied
Da seh ich jetzt geade nicht durch :bahnhof: . habe noch nie mit Hashmaps gearbeitet und wie soll ich das darin realisieren :autsch:
 
S

SlaterB

Gast
das ist nur eine Idee, wenn du Maps nicht kennst, kann die Umsetzung sehr schwer sein,
nicht alle Ideen muss man immer umsetzen,

ein allgemeines Beispiel bekommst du noch, aber komplett kann ich dir dabei nicht helfen
Code:
public class Test
{
    public static void main(String[] args)
        throws Exception
    {
        List<String> list = new ArrayList<String>();
        Collections.addAll(list, "a", "b", "c", "d", "e", "f");

        Map<String, String> map = new HashMap<String, String>();
        for (String s : list)
        {
            map.put(s, s);
        }


        String such = "f";

        for (int i = 0; i < list.size(); i++)
        {
            if (list.get(i).equals(such))
            {
                System.out.println("gefunden in " + i + " Schritten");
            }
        }

        String inMap = map.get(such);
        if (inMap != null)
        {
            System.out.println("gefunden in einem Schritt");
        }
    }
}
 

Titanpharao

Bekanntes Mitglied
Hmm...ja soweit habe ich das verstanden, danke.
Nur ich brauche i für "xsdschema.add(new XSD(newNode,nr,i));" Wie soll ich rausfinden über diese Maps an welcher Stelle sich der Wert befindet. Mir reicht nicht das es ihn gibt.
 
S

SlaterB

Gast
zunächst könnest du dann per
Node -> Integer die Poisition ablegen,

du müsstest dann aber auch irgendwie den Key aus der Map holen,
was nicht direkt unterstützt wird,

zwei Vorschläge:
a.) 2 Maps,
Node -> Node
+
Node -> Integer

b.)
eine Map:
Node -> eigenes Objekt mit Node + int drin,
deutlich besser
 
G

Gast

Gast
Wenns eine node nur einmal vorkommen soll,
machs doch gleich in ein Set.. zb HashSet

String test = "test";
set.add(test);
set.add(test);

-> set.length() bleibt 1.. da nur 1 test aufgenommen wird.. weil der 2. das gleiche ist

die gleichheitsprüfung findet mit equals statt.. du könntest also einfach das equals deiner objekte: hier nodes, überschreiben, indem du nur true zurückgibst wenn die namen der nodes gleich sind o.ä.

somit hättest du gleich duplikate vermieden
 

Wildcard

Top Contributor
Gast hat gesagt.:
die gleichheitsprüfung findet mit equals statt.. du könntest also einfach das equals deiner objekte: hier nodes, überschreiben, indem du nur true zurückgibst wenn die namen der nodes gleich sind o.ä.
Dann muss auch hashcode überschrieben werden! :meld:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
HolyFUT Best Practice Wie geht man mit "schlechten" Projekten um? Allgemeine Java-Themen 7
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
F 2 JsonArray vergleichen, geht es auch einfacher ? Allgemeine Java-Themen 3
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
M Test geht auf Travis und mit Github Action schief aber nicht lokal Allgemeine Java-Themen 3
M Console geht nicht auf (Windows 10) Allgemeine Java-Themen 3
W Enumeration ein Array/List als Eigenschaft mitgeben - warum geht das nicht? Allgemeine Java-Themen 0
P Erste Schritte HauptFrame geht nicht Allgemeine Java-Themen 7
L Applet Applet zu JavaWebStart migrieren - simples sample geht nicht Allgemeine Java-Themen 2
KeVoZ_ Java Mail senden - geht nicht Allgemeine Java-Themen 4
K API - Wie geht das? Allgemeine Java-Themen 2
D Klassenübergreifender Befehl geht nicht Allgemeine Java-Themen 10
X Datentypen Byte geht nicht höher als 126 auch nicht mit casten? Allgemeine Java-Themen 22
J Umwandeln von URL zu File und danach kopieren geht nicht Allgemeine Java-Themen 1
M JUnit Serverseitig? Wie geht sowas? Allgemeine Java-Themen 2
G Erste Schritte Aufgabe - Geht das auch schneller ? Allgemeine Java-Themen 7
E JavaFX String-Wert geht "verloren" - ratlos Allgemeine Java-Themen 2
B Fehler beim Auslesen von Einstellungen. Zwei ähnliche Blöcke, nur eins geht. Allgemeine Java-Themen 5
H Unicode ausgeben ohne Umwandlung - geht das? Allgemeine Java-Themen 3
F Java Anwendung Remote starten geht nicht Allgemeine Java-Themen 0
M Eingabe von Arrays geht über gewünschte Anzahl hinaus Allgemeine Java-Themen 2
K print() geht nicht ohne println() Allgemeine Java-Themen 3
V 2D-Grafik BufferdImage aus gif Datei in Jar erzeugen geht nicht. Allgemeine Java-Themen 6
Fl4sh1 Autovervollständigungfenster geht nicht (eclipse) Allgemeine Java-Themen 10
P Absatz im String / Excel / /n geht nicht Allgemeine Java-Themen 2
Z Java geht nicht im Browser Allgemeine Java-Themen 5
J Laden von JAR Files geht ohne ADMIN Rechte sehr langsam Allgemeine Java-Themen 6
B Keylistener geht nicht Allgemeine Java-Themen 9
R Wie geht man mit CachedRowSet um Allgemeine Java-Themen 2
I Downloaden einer Datei geht nicht? Allgemeine Java-Themen 16
P Input/Output Ordner löschen --> geht nicht Datei --> Ja Allgemeine Java-Themen 6
G JTable mit Keylistener geht nicht Allgemeine Java-Themen 3
C Zugriff auf private Methode per reflection geht nicht mehr Allgemeine Java-Themen 3
R Geht das? JRE 1.4 global, 1.6.20 nur für eine Anwendung? Allgemeine Java-Themen 9
ruutaiokwu junit mit annotations geht nicht? Allgemeine Java-Themen 5
F externe module. geht das in Java? Allgemeine Java-Themen 3
N Java geht nicht mehr zu löschen Allgemeine Java-Themen 5
M XML-Datei geht bei voller Festplatte verloren Allgemeine Java-Themen 4
DStrohma Daten in JAR speichern geht nicht?? Allgemeine Java-Themen 22
S Viele Bilder -> Speicher ausgelastet? / (De-)serialisierung geht nicht mehr richtig Allgemeine Java-Themen 8
B Komplettes Projekt als UML Diagramm mit eUML...geht das? Allgemeine Java-Themen 10
N List<? implements "Interface"> geht nicht Allgemeine Java-Themen 13
C Methodenkopf: Zu was wenns auch ohne geht? Allgemeine Java-Themen 3
A Javakonsolenfenster geht gleich wieder zu Allgemeine Java-Themen 6
M Übergebener String bearbeiten geht nicht. Allgemeine Java-Themen 4
D iText und Table.setTableFitsPage(); geht nicht Allgemeine Java-Themen 12
E Cipher geht mal und mal nicht Allgemeine Java-Themen 3
G Datei löschen nach kopieren geht nicht Allgemeine Java-Themen 5
A Standalone geht - JSP u. Bean nicht Allgemeine Java-Themen 6
D Jar auf Mac starten geht nicht Allgemeine Java-Themen 3
M Klasse Desktop geht nicht mehr (EXCEPTION_ACCESS_VIOLATION) Allgemeine Java-Themen 9
M ireport (Jasper Report) geht nur auf meinen Rechner Allgemeine Java-Themen 3
S Rechner formatiert - nichts geht mehr. Allgemeine Java-Themen 2
S Apache Commons Net geht nicht Allgemeine Java-Themen 5
zilti Wieso geht der StreamReader/Writer nicht? Allgemeine Java-Themen 5
M commapi unter vista, geht das? Allgemeine Java-Themen 4
V JavaProgramm von Konsole starten geht nichtmehr Allgemeine Java-Themen 4
V JVM OutofMemory Linux geht, windows nicht Allgemeine Java-Themen 3
Chris_1980 Geht das nicht auch einfacher (Arcanoid Multiball) Allgemeine Java-Themen 2
H Vector<T>[] vecs = new Vector<T>[10]; geht nicht Allgemeine Java-Themen 2
D Geht es auch schneller doppelte Einträge zu löschen? Allgemeine Java-Themen 23
K java geht beim chatten nicht? Allgemeine Java-Themen 2
G Mit Java auf windows 2003 userrechte zugreifen geht sowas ? Allgemeine Java-Themen 2
R Drag und Drop von externen Files geht nur als Application Allgemeine Java-Themen 2
O Input stream geht net Allgemeine Java-Themen 2
J Threads, Doppelpufferung --> Beispiel gefunden, geht net Allgemeine Java-Themen 16
P rar.exe und variablenparameter als String geht net Allgemeine Java-Themen 4
G Da Jikes nicht mit java 5 geht, gibt es eine andere. Allgemeine Java-Themen 4
TheJavaKid warum geht das nicht? Allgemeine Java-Themen 14
G setLastModified geht nicht Allgemeine Java-Themen 8
H Ausführungsgeschwindigkeit reduzieren. Geht das? .. Allgemeine Java-Themen 21
G parseInt geht nicht Allgemeine Java-Themen 10
K Mit Java kleine Freeware Programme erstellen. Geht das? Allgemeine Java-Themen 16
G Konsoleneingabe: vordefinierte werte setzen? geht das? Allgemeine Java-Themen 4
André B. geht das? Allgemeine Java-Themen 6
L JTable: Wenn Zeile markiert dann Meldung. geht nicht Allgemeine Java-Themen 4
G Mouselistener geht aber danach Fehler bei JOptionPane Allgemeine Java-Themen 4
K Object casting geht nicht. Allgemeine Java-Themen 3
M Systemzeit der Java VM geht falsch Allgemeine Java-Themen 4
G Warum einfach wenns kompliziert auch geht? Allgemeine Java-Themen 12
K KeyEvent in eigenem Component geht nicht Allgemeine Java-Themen 3
L Jar-Datei aus Eclipse geht nicht Allgemeine Java-Themen 2
C Was geht noch? Allgemeine Java-Themen 13
P Nur eine Instanz eines Programms zulassen, wie geht das? Allgemeine Java-Themen 15
G Geht das? Allgemeine Java-Themen 4
V StreamTokenizer ???? Wie geht das Allgemeine Java-Themen 3
S Vielleicht OT aber dringend: Java Editor JAMBA gesucht Allgemeine Java-Themen 2
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
berserkerdq2 SceneBuilder GUI erstellt, nun muss ich noch ein Polygon erstellen, ist die Connection möglich? Allgemeine Java-Themen 3
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
T JavaPoet - (noch) nicht existente Typen Allgemeine Java-Themen 2
B Lottospielen mit System, Versuch 2, noch umständlicher als vorher Allgemeine Java-Themen 1
berserkerdq2 Wozu schreibe ich 3 und 1 noch hin? Allgemeine Java-Themen 5
S Noch eine Design-Frage zu Setter Allgemeine Java-Themen 6
Bluedaishi Prüfen ob Datei noch geöffnet ist Allgemeine Java-Themen 59
R JDK installieren Gibt es ab 2019 überhaupt noch Java? Allgemeine Java-Themen 6
S Wird bei den JREs 9, 10, 11+ ueberhaupt noch Bytecode ausgefuehrt..? Allgemeine Java-Themen 8
J Could not convert socket to TLS - gestern liefs noch Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben