So erstellen Sie eine Java-Tabellenkalkulationsdatenstruktur
Auf der einfachsten Ebene können Sie mit einem einfachen 2D-Array eine Datenstruktur für eine Tabellenkalkulation in Java erstellen. Dieser Ansatz lässt jedoch sehr zu wünschen übrig. Im Idealfall sollte eine Tabellenkalkulationsdatenstruktur in der Lage sein, ganze Zeilen und Spalten effizient in der Größe zu ändern, einzufügen und zu löschen, und diese Operationen sind in einem Java-Array rechenintensiv, sodass Java jedes Mal die gesamte Datenstruktur hinter den Kulissen von Grund auf neu aufbauen muss Betrieb durchgeführt wird.
Stattdessen sollten Sie etwas Anspruchsvolleres verwenden: eine verknüpfte Liste von verknüpften Listen. Dies ermöglicht das Einfügen und Entfernen von Zeilen und Spalten sowie die Größenänderung der Tabelle viel schneller. Es ist jedoch mit geringen Leistungskosten verbunden, wenn es darum geht, außerhalb der Reihe auf bestimmte Zellen der Kalkulationstabelle zuzugreifen.
Schritt 1
Erstellen Sie eine neue Java-Datei und nennen Sie sie "SpreadsheetStructure.java". Wenn Sie eine bevorzugte integrierte Entwicklungsumgebung (IDE) haben, können Sie dies tun, indem Sie auf "Datei", "Neue Klasse" klicken. Alternativ können Sie Windows Notepad öffnen, indem Sie auf "Start", "Alle Programme", "Zubehör", "Notepad" klicken und die Datei unter diesem Dateinamen speichern.
Schritt 2
Erstellen Sie Ihre Klassenschnittstelle, indem Sie Folgendes in die Datei einfügen, die Sie in Schritt 1 erstellt haben. Die restlichen Schritte dienen dem Ausfüllen des Codes für jede der in diesem Schritt definierten Methoden:
Tabellenkalkulation der öffentlichen Klasse {
LinkedList Daten = neue LinkedList(); public Spreadsheet() { } public void addRow() { } public void addRow(int index) {} public void removeRow(int index) {} public void removeColumn(int index) {} public void addColumn() { } public void addColumn (int index) { } public void setCell(int x, int y, String newData) { } public int getWidth() { } public int getHeight() { } public String toString() { } /** * Teste die Klasse, */ public static void main(String[] args) { }
}
Die grundlegende Datenstruktur ist eine LinkedList von Zeilen, die eine LinkedList von Spalten enthält. Obwohl ein einfaches 2D-Array einfacher zu implementieren wäre, wäre es für viele gängige Tabellenkalkulationsvorgänge, insbesondere das Einfügen und Löschen von Zeilen, auch viel langsamer.
Schritt 3
Fügen Sie den folgenden Code zwischen den Klammern der Konstruktormethode "Spreadsheet" ein:
öffentliches Spreadsheet() { addRow(); addColumn(); }
Dies stellt einfach sicher, dass wir mit mindestens einer einzelnen Zeile und Spalte beginnen.
Schritt 4
Fügen Sie Folgendes ein, um die beiden addRow-Methoden auszufüllen. Einer verwendet keine Argumente und fügt die Zeile automatisch am Ende der Tabelle hinzu, während der andere dem Benutzer ermöglicht, anzugeben, wo die Zeile hinzugefügt werden soll:
public void addRow() { data.addLast(neue LinkedList()); for (int x = 0; x < getHeight(); x++) { data.getLast().add(new String()); } } public void addRow(int index) { data.add(index, new LinkedList()); for (int x = 0; x < getHeight(); x++) { data.get(index).add(new String()); } }
Schritt 5
Fügen Sie den Code zum Entfernen einer Zeile in Ihre Quelldatei ein:
public void removeRow(int index) { data.remove(index); }
Schritt 6
Fügen Sie den Code für die beiden addColumn-Methoden ein. Diese funktionieren ähnlich wie die addRow-Methoden – es gibt zwei, eine zum Hinzufügen einer Spalte am Ende des Blatts und eine zum Einfügen einer Spalte in der Mitte:
public void addColumn() { for (LinkedList l: data) {l.addLast (new String()); } } public void addColumn(int index) { for (LinkedList l: data) {l.add(index, new String()); } }
Schritt 7
Fügen Sie den Code zum Entfernen von Spalten ein:
public void removeColumn(int index) { for (LinkedList l: data) {l.remove(index); } }
Schritt 8
Fügen Sie den Code, der den Inhalt einer bestimmten Zelle festlegt, in eine Datenzeichenfolge ein:
public void setCell(int x, int y, String newData) { data.get(x).set(y, newData); }
Schritt 9
Geben Sie die Methoden zum Abrufen der Breite und Höhe der Tabelle ein:
public int getWidth() { return data.getFirst().size(); } public int getHeight() { return data.size(); }
Schritt 10
Implementieren Sie die toString-Methode. Dadurch wird eine formatierte Zeichenfolge zurückgegeben, die in einer Tabelle mit Zeilen und Spalten die Daten in der Tabelle anzeigt:
public String toString() { String temp = ""; for (LinkedList l : data) { for (Object o : l) { String s = (String) o; if (s.equals("")) s = "-leer-"; temp += s + " "; } temp += "\n"; } Rücklauftemperatur; }
Fügen Sie die folgende Hauptmethode ein, die die Datenstruktur der Tabellenkalkulation auf Herz und Nieren prüft und sicherstellt, dass alles wie erwartet funktioniert:
public static void main(String[] args) { Spreadsheet = new Spreadsheet(); System.out.println(sheet.toString()); System.out.print (sheet.getWidth()); System.out.print(" x "); System.out.println(sheet.getHeight()); blatt.addRow(); System.out.print (sheet.getWidth()); System.out.print(" x "); System.out.println(sheet.getHeight()); blatt.setCell(0,0,"1"); blatt.setCell(0,1,"2"); blatt.setCell(1,0,"3"); blatt.setCell(1,1,"4"); System.out.println(sheet.toString()); blatt.addColumn(1); blatt.setCell(1,0, "TEMP"); blatt.setCell(1,1, "TEMP"); System.out.println(sheet.toString()); blatt.removeRow(1); System.out.println(sheet.toString()); blatt.removeColumn(1); System.out.println(sheet.toString()); }