Optimierung eines Programms: Mergen der Dateien

Adriano10

Bekanntes Mitglied
In einem Folder hab 100 000 und davon wollte 50 000 Dateien zu einer Datein zusammenfügen. Das Code funktioniert mit weniger Mengen, aber mit 50 000 dauert ewig, wie könnte ich mein Code optiemeren. Jede Vorschläge würde mich sehr freuen.

Java:
package com.company;

import org.w3c.dom.Document;
import org.w3c.dom.Node;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;
import java.io.*;

public class XMLReadWriter {
    public Document merge(String expression,
                                  File... files) throws Exception {
        XPathFactory xPathFactory = XPathFactory.newInstance();
        XPath xpath = xPathFactory.newXPath();
        XPathExpression compiledExpression = xpath
                .compile(expression);
        return merge(compiledExpression, files);
    }

    public Document merge(XPathExpression expression,
                                  File... files) throws Exception {
        DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
                .newInstance();
        docBuilderFactory
                .setIgnoringElementContentWhitespace(true);
        DocumentBuilder docBuilder = docBuilderFactory
                .newDocumentBuilder();
        Document base = docBuilder.parse(files[0]);

        Node results = (Node) expression.evaluate(base,
                XPathConstants.NODE);
        if (results == null) {
            throw new IOException(files[0]
                    + ": Fehlschlag" + files.length);
        }

        for (int i = 1; i < files.length; i++) {
            Document merge = docBuilder.parse(files[i]);
            Node nextResults = (Node) expression.evaluate(merge,
                    XPathConstants.NODE);
            while (nextResults.hasChildNodes()) {
                Node kid = nextResults.getFirstChild();
                nextResults.removeChild(kid);
                kid = base.importNode(kid, true);
                results.appendChild(kid);
            }
        }

        return base;
    }

    public static void print(Document doc) throws Exception {
        TransformerFactory transformerFactory = TransformerFactory
                .newInstance();
        Transformer transformer = transformerFactory
                .newTransformer();
        DOMSource source = new DOMSource(doc);
        Result result = new StreamResult(System.out);
        transformer.transform(source, result);
    }


    public static void write(Document doc) throws TransformerConfigurationException {
        TransformerFactory tFactory = TransformerFactory.newInstance();
        Transformer transformer = tFactory.newTransformer();
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        DOMSource source = new DOMSource(doc);
        StreamResult result = new StreamResult(new StringWriter());
        try {
            transformer.transform(source, result);
            Writer output = new BufferedWriter(new FileWriter("C:/Users/p05865/IdeaProjects/XMLDateien/Materials1Bis50000.xml"));
            String xmlOutput = result.getWriter().toString();
            output.write(xmlOutput);
            output.close();
            System.out.println("Ready");
        } catch (TransformerException | IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public File[] findAllFilesInFolder(File... folder) {
    
        return folder;
    }
}
Java:
package com.company;

import org.w3c.dom.Document;
import java.io.*;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

public class Main {

    static String path = "C:/Users/p05865/IdeaProjects/muster/Material_1200668137_08092021_104636594.xml";

    public static void main(String[] args) throws Exception {

        // proper error/exception handling omitted for brevity
        com.company.XMLReadWriter xmlReadWriter = new com.company.XMLReadWriter();

        File file = new File(path);
        File[] files1 = new File[50000];
        File[] files = file.listFiles();
        int count = 0;
        for (int j = 0; j < files.length - 50000; j++){
                files1[count++] = files[j];

        }
            Document doc = xmlReadWriter.merge("/STEP-ProductInformation/Products", files1);
            xmlReadWriter.write(doc);
            xmlReadWriter.print(doc);


    }
}
 

Adriano10

Bekanntes Mitglied
Was bedeutet denn "ewig"? Wenn es pro Datei eine Zehntel Sekunde dauert, sollte es bei 50.000 Dateien 5.000 Sekunden dauern - das sind weniger als zwei Stunden. Und so oft wirst du doch keine 100.000 Dateien vorliegen haben.
Ja das kann fast bei 2 Stunden liegen, aber vielleicht kennt jemand anderen besseren Weg, so dass ich einige For Shleife ausweichen kann, jede Schleife kostet Zeit.
 

Oneixee5

Top Contributor
Da wird einfach der für die JVM verfügbare Speicher nicht ausreichen. Wurde dieser schon mal heraufgesetzt? Wie sind die Startparameter für dein Programm?
 

fhoffmann

Top Contributor
Hallo,

das Aneinanderfügen von Dateien sollte sehr schnell gehen. Dein Problem scheint zu sein, dass du xml-Dateien zunächst parst und dann wieder schreibst - das kostet natürlich Zeit (EDIT: Ich muss gestehen, dass ich deinen Code dafür nicht wirklich angesehen habe).
Ich kenne die Struktur deiner Dateien nicht; aber möglicherweise reicht es ja aus, die ersten und letzten paar Zeilen zu löschen und alles andere nur zu kopieren.

Gruß
Fritz
 

Adriano10

Bekanntes Mitglied
Da wird einfach der für die JVM verfügbare Speicher nicht ausreichen. Wurde dieser schon mal heraufgesetzt? Wie sind die Startparameter für dein Programm?
Am Ende, nach Zwei Stunden Warten wurde Fehlermeldung ausgegeben. Da das mich sehr verärgert, hab die Meldung leider nicht geachtet… wenn das daran liegt, gibt es den Ausweg?

Ich verstehe leider nicht, was sie unter Startparameter meinen. Das Code hab oben eingefügt…
 

Adriano10

Bekanntes Mitglied
Hallo,

das Aneinanderfügen von Dateien sollte sehr schnell gehen. Dein Problem scheint zu sein, dass du xml-Dateien zunächst parst und dann wieder schreibst - das kostet natürlich Zeit (EDIT: Ich muss gestehen, dass ich deinen Code dafür nicht wirklich angesehen habe).
Ich kenne die Struktur deiner Dateien nicht; aber möglicherweise reicht es ja aus, die ersten und letzten paar Zeilen zu löschen und alles andere nur zu kopieren.

Gruß
Fritz
Danke Fritz für die Rückmeldung… ha ich parse erst dann wird die Dateien miteinander gemergt, am ende wird die zusammengefügte Datei geschrieben
 

fhoffmann

Top Contributor
Danke Fritz für die Rückmeldung… ha ich parse erst dann wird die Dateien miteinander gemergt, am ende wird die zusammengefügte Datei geschrieben
Wenn deine Dateien etwa so aussehen:
Code:
<?xml version="1.0" encoding="utf-8"?>
<Bestellungen>
  <Bestellung>
    # irgendwas
  </Bestellung>
  <Bestellung>
    # irgendwas
  </Bestellung>
</Bestellungen>
dann kanst du in deine Ausgabedatei die beiden ersten und die letzte Zeile schreiben und sie ansonsten löschen.
Dann benötigst du keinen Parser und auch nicht mehr Arbeitsspeicher.
 

Oneixee5

Top Contributor
Wenn deine Dateien etwa so aussehen:
Code:
<?xml version="1.0" encoding="utf-8"?>
<Bestellungen>
  <Bestellung>
    # irgendwas
  </Bestellung>
  <Bestellung>
    # irgendwas
  </Bestellung>
</Bestellungen>
dann kanst du in deine Ausgabedatei die beiden ersten und die letzte Zeile schreiben und sie ansonsten löschen.
Dann benötigst du keinen Parser und auch nicht mehr Arbeitsspeicher.
Naja er sucht ja einen bestimmten XPath in jeder Datei und übernimmt die Treffer in die Zieldatei. Weiterhin ist es riskant anzunehmen, dass wirklich alle Quelldateien formatiert vorliegen.
 

Oneixee5

Top Contributor
In der print-Methode sehe ich keinen Sinn. Es wird ein Transformer erzeugt aber keine XSL übergeben. Das Ziel-XML wird komplett ein x-tes mal in den Speicher geladen um es dann auf System.out wieder rauszuhauen. Das ist sinnlos!
Warum wird hier: StreamResult result = new StreamResult(new StringWriter()); erst mal alles in eine String geschrieben, anstatt sofort den FileWriter/BufferedWriter zu verwenden?
 

Adriano10

Bekanntes Mitglied
In der print-Methode sehe ich keinen Sinn. Es wird ein Transformer erzeugt aber keine XSL übergeben. Das Ziel-XML wird komplett ein x-tes mal in den Speicher geladen um es dann auf System.out wieder rauszuhauen. Das ist sinnlos!
Warum wird hier: StreamResult result = new StreamResult(new StringWriter()); erst mal alles in eine String geschrieben, anstatt sofort den FileWriter/BufferedWriter zu verwenden?
Stimmt. diese Methode hab nur am Anfang gebraucht, zu testen. jetzt ist ohne Funktion.
 

mihe7

Top Contributor
Ich würde so ein Problem eher wie von @fhoffmann vorgeschlagen angehen. Wenn da noch XML verarbeitet werden muss, dann würde sich bei den Mengen ggf. StAX lohnen. Die Ausgabedatei würde ich nur einmal öffnen, dann die Eingabedatei lesen, die betreffenden Elemente (Events) einfügen. Das dürfte zigmal schneller gehen, als jedesmal einen DOM zu parsen.
 

Adriano10

Bekanntes Mitglied
Ich würde so ein Problem eher wie von @fhoffmann vorgeschlagen angehen. Wenn da noch XML verarbeitet werden muss, dann würde sich bei den Mengen ggf. StAX lohnen. Die Ausgabedatei würde ich nur einmal öffnen, dann die Eingabedatei lesen, die betreffenden Elemente (Events) einfügen. Das dürfte zigmal schneller gehen, als jedesmal einen DOM zu parsen.
Ich würde so ein Problem eher wie von @fhoffmann vorgeschlagen angehen. Wenn da noch XML verarbeitet werden muss, dann würde sich bei den Mengen ggf. StAX lohnen. Die Ausgabedatei würde ich nur einmal öffnen, dann die Eingabedatei lesen, die betreffenden Elemente (Events) einfügen. Das dürfte zigmal schneller gehen, als jedesmal einen DOM zu parsen.
Wenn ich Cods andres schreibe, dann wird ganze Struktur in der Datei geändert und die Anforderung auf die Datei wird nicht mehr erfüllt…
 

mrBrown

Super-Moderator
Mitarbeiter
Ehrlich gesagt, nicht ganz, aber hat funktioniert. Wenn die von mir eingegebenen Werten ganz schlimm sind und es gäbe andere bessere Möglichkeit, würde mir sehr geholfen
-Xmx128m -Xms7096m stellt den maximalen Speicher Xmx auf 128MB und den initialen Speicher Xms auf 7096m. Damit überschreibst du den maximalen Wert, und zusätzlich brauchst du direkt vom Start an 7Gb Speicher, völlig egal, wie viel wirklich gebraucht wird.

-Xmx7g wäre da eine sinnvolle Alternative, dann wird bis zu 7GB benutzt, je nachdem wie viel gebraucht wird.

Wenn ich Cods andres schreibe, dann wird ganze Struktur in der Datei geändert und die Anforderung auf die Datei wird nicht mehr erfüllt…
Man kann den Code auch anders schreiben und trotzdem eine korrekte Ausgabe erhalten...
 

Adriano10

Bekanntes Mitglied
-Xmx128m -Xms7096m stellt den maximalen Speicher Xmx auf 128MB und den initialen Speicher Xms auf 7096m. Damit überschreibst du den maximalen Wert, und zusätzlich brauchst du direkt vom Start an 7Gb Speicher, völlig egal, wie viel wirklich gebraucht wird.

-Xmx7g wäre da eine sinnvolle Alternative, dann wird bis zu 7GB benutzt, je nachdem wie viel gebraucht wird.


Man kann den Code auch anders schreiben und trotzdem eine korrekte Ausgabe erhalten...
Das stimmt, man kann selbstverständlich, aber zeitlich bin sehr beschränkt und das Code umzuschreiben würde von mir richtig viel Zeit verlangen.

viele Dank für gute Erklärung.
 

mihe7

Top Contributor
Das stimmt, man kann selbstverständlich, aber zeitlich bin sehr beschränkt und das Code umzuschreiben würde von mir richtig viel Zeit verlangen.
Das war von mir nur als allgemeiner Hinweis gemeint. Nachdem Du das Problem bereits durch mehr Heap gelöst hattest, war ich jetzt nicht davon ausgegangen, dass Du alles neu schreiben würdest, nur um die Dateien nochmal zu mergen :)

Wenn man mal eben eine "Einmal"-Lösung braucht, ist Quick & Dirty nicht nur ok, sondern gut. Nicht lange mit Code aufhalten, in Deinem Fall Heap hochsetzen, Thema erledigt. Da spielen Fehlerbehandlung oder eben der Ressourcenverbrauch keine Rolle, zur Not wechselt man auf einen besser ausgestatteten Rechner. Solltest Du das aber öfter machen müssen, womöglich mit noch größeren Datenmengen oder Dein Tool auf Rechnern ausgeführt werden müssen, die nicht so stark auf der Brust sind, dann lohnt sich die Optimierung des Codes.
 

Adriano10

Bekanntes Mitglied
Das war von mir nur als allgemeiner Hinweis gemeint. Nachdem Du das Problem bereits durch mehr Heap gelöst hattest, war ich jetzt nicht davon ausgegangen, dass Du alles neu schreiben würdest, nur um die Dateien nochmal zu mergen :)

Wenn man mal eben eine "Einmal"-Lösung braucht, ist Quick & Dirty nicht nur ok, sondern gut. Nicht lange mit Code aufhalten, in Deinem Fall Heap hochsetzen, Thema erledigt. Da spielen Fehlerbehandlung oder eben der Ressourcenverbrauch keine Rolle, zur Not wechselt man auf einen besser ausgestatteten Rechner. Solltest Du das aber öfter machen müssen, womöglich mit noch größeren Datenmengen oder Dein Tool auf Rechnern ausgeführt werden müssen, die nicht so stark auf der Brust sind, dann lohnt sich die Optimierung des Codes.
Klar, auf jeden Fall lohnt sich, wenn ich mein Problem so nicht gelöst hätte, dann hätte ich Code umschreiben müssen. Darum geht es auch diesem Post…

ich bin sehr dankbar bei jedem, der hier ein Kommentar geschrieben hat
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Stabzerlegungsproblem / Optimierung Java Basics - Anfänger-Themen 31
CptK Optimierung von Flächen Java Basics - Anfänger-Themen 9
Y "Optimierung" des Codes Java Basics - Anfänger-Themen 14
T Auslesen der Zwischenablage - Optimierung Geschwindigkeit Java Basics - Anfänger-Themen 6
M Code Optimierung - Verbesserungen Java Basics - Anfänger-Themen 10
S Optimierung bzw. verschönerung des Quellcodes Java Basics - Anfänger-Themen 9
F code Optimierung (Bin-Hex-Bytes) Java Basics - Anfänger-Themen 9
A Frage zur Laufzeit / Optimierung Java Basics - Anfänger-Themen 2
P JUnit - Optimierung der Testklassen Java Basics - Anfänger-Themen 13
-horn- "Berechnung vorwärts, Optimierung rückwärts?" - Wie würdet ihr das machen? Java Basics - Anfänger-Themen 8
T synchronisations-optimierung Java Basics - Anfänger-Themen 2
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
P Wie kann ich beispielsweise Speicherstände eines Spiels DAUERHAFT in meinem Programm speichern? Java Basics - Anfänger-Themen 3
laxla123 Eigenschaften eines Algorithmus (determiniert vs.. deterministisch) Java Basics - Anfänger-Themen 2
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
J Farbe des Striches eines TitledBorders ändern Java Basics - Anfänger-Themen 2
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
walid Öffnungszeiten eines Geschäftes Java Basics - Anfänger-Themen 3
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
B Synchronisation eines kleinen Museums Java Basics - Anfänger-Themen 47
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
Sachinbhatt Was ist die Notwendigkeit eines Sammlungsframeworks in Java? Java Basics - Anfänger-Themen 2
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
B Produkt eines double - streams Java Basics - Anfänger-Themen 3
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
S Variablen Letzte Zeile eines Strings entfernen Java Basics - Anfänger-Themen 1
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
J Größe eines Strings in Pixel Java Basics - Anfänger-Themen 18
M Parse-Tree eines statements darstellen Java Basics - Anfänger-Themen 0
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
J Hinzufügen eines Objektes in ein Objekt-Array Java Basics - Anfänger-Themen 62
M Wie kann die Implementation einer Methode den Wert eines Attributs vermindern? Java Basics - Anfänger-Themen 3
A Rekursive Implementation eines Codes Java Basics - Anfänger-Themen 4
H String Repräsentation eines Rechtecks mit Instanz-Methode Java Basics - Anfänger-Themen 8
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
M Wie erreiche ich das Vorwärtsgehen eines Roboters? Java Basics - Anfänger-Themen 2
M Wie erreiche ich es das Vorwärtsgehen eines Roboters? Java Basics - Anfänger-Themen 0
R While-Loop der die Einträge eines Arrays in umgekehrter Reihenfolge anzeigt Java Basics - Anfänger-Themen 3
melisax Alle Möglichkeiten eines Wortes angeben Java Basics - Anfänger-Themen 3
A Java, verarbeitung eines xml-files Java Basics - Anfänger-Themen 2
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
F Initialisieren eines Web-Mp3 Players in Tabs durch "booleans" erst wenn Tab geöffnet wird ...? Java Basics - Anfänger-Themen 1
P Drei Zahlen eines Würfelspiels auswerten Java Basics - Anfänger-Themen 7
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
C initialisieren eines arrays richtiger Größe und mit geeignetem Datentyp Java Basics - Anfänger-Themen 26
C Überprüfen eines Programms auf Syntaxfehler Java Basics - Anfänger-Themen 3
S Wie kann ich den Bereich eines Integers begrenzen? Java Basics - Anfänger-Themen 2
nonickatall Grundsätzliches Verständnisproblem des Aufbaus eines Programms Java Basics - Anfänger-Themen 19
B Downgrade eines bestehenden Projektes Java Basics - Anfänger-Themen 5
amelie123456 Geschwindigkeit der Methode bewegeDich eines Objekts ändern Java Basics - Anfänger-Themen 2
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
J maximaler Wert eines Integers Java Basics - Anfänger-Themen 14
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
Z Rückgabe eines Values in umgekehrte richtung Java Basics - Anfänger-Themen 5
L Methode zum invertieren eines Arrays Java Basics - Anfänger-Themen 7
B fragen zu Aufbau eines UML-Klassendiagramm Java Basics - Anfänger-Themen 1
eleonori Durchschnitt aller Werte eines Baums berechnen Java Basics - Anfänger-Themen 5
M Benutzereingabe eines Codes verbessern Java Basics - Anfänger-Themen 3
B Modulo-Operator anhand eines Beispieles erklären Java Basics - Anfänger-Themen 7
J Verschieben von Buchstaben in einem String um vorgegebene Anzahl von Zeichen innerhalb eines weiteren String Java Basics - Anfänger-Themen 12
F Auf Variablen eines Konstruktors zugreifen Java Basics - Anfänger-Themen 4
Kawastori Größe eines Arrays bestimmen Java Basics - Anfänger-Themen 13
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
A Teilarrays eines 2D-Arrays sortieren Java Basics - Anfänger-Themen 4
marcooooo Separator zwischen allen Zeichen eines Strings einfügen Java Basics - Anfänger-Themen 29
C Wie kann ich Versionen eines Projektes in Eclipse erstellen? Java Basics - Anfänger-Themen 3
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
A Teilen eines Arrays Java Basics - Anfänger-Themen 5
DorFey Sortieren eines mehrdimensionalen Arrays Java Basics - Anfänger-Themen 8
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
R Löschen und ausgeben eines Teilbaums Java Basics - Anfänger-Themen 3
J Alle Werte eines Strings zusammen addieren Java Basics - Anfänger-Themen 15
M Hilfe bei Strukturierung eines Buchungssystems Java Basics - Anfänger-Themen 3
M Erstellen eines insets Objekts, GridBagLayout Java Basics - Anfänger-Themen 13
M Rückgabe eines Arrays Java Basics - Anfänger-Themen 10
Z Erste Schritte Indexe innerhalb eines Arrays zusammensählen Java Basics - Anfänger-Themen 14
W Random Zahl unter Berücksichtung eines Durchschnitts Java Basics - Anfänger-Themen 7
N Länge eines Arrays in einem Objekt testen Java Basics - Anfänger-Themen 51
A Freie Stelle eines Arrays Java Basics - Anfänger-Themen 17
C Erstellen eines Widerstandsnetzwerks Java Basics - Anfänger-Themen 10
C Methode Seiten tauschen eines erstellten Rechtecks mit Seite A und B Java Basics - Anfänger-Themen 9
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
F Berechnung der Rektaszension und Deklination eines Sterns Java Basics - Anfänger-Themen 7
1 Erste Schritte Was denkt ihr über eines meiner ersten Javaprogramme? Java Basics - Anfänger-Themen 2
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
H Größte Duplikat (Größte Doppelte Wert) eines Arrays ausgeben Java Basics - Anfänger-Themen 9
M Hinzufügen eines Objekts auf ein Map Java Basics - Anfänger-Themen 4
M Auf einen Array innerhalb eines Objekts zugreifen Java Basics - Anfänger-Themen 5
S Elemente eines Arrays bei Ausgabe auslassen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben