Hur man skapar en Java-databladstruktur för kalkylblad

På den enklaste nivån kan du skapa en datastruktur för ett kalkylark i Java med en enkel 2D-array. Detta tillvägagångssätt lämnar dock mycket att önska. Helst borde en datastruktur i ett kalkylblad effektivt kunna ändra storlek på, infoga och ta bort hela rader och kolumner, och dessa operationer är beräkningsbara dyra i en Java-array, vilket kräver att Java bygger om hela datastrukturen från grunden bakom kulisserna varje gång operation utförs.

Istället bör du använda något lite mer sofistikerat: en länkad lista över länkade listor. Detta gör att infogning och borttagning av rader och kolumner samt storleksändring av tabellen kan ske mycket snabbare. Det kommer dock att medföra en liten prestandakostnad när det är dags att komma åt specifika celler i kalkylbladet ur sin tur.

Steg 1

Skapa en ny Java-fil och namnge den "SpreadsheetStructure.java." Om du har en favoritintegrerad utvecklingsmiljö (IDE) kan du göra detta genom att klicka på "Arkiv", "Ny klass." Alternativt kan du öppna Windows anteckningar genom att klicka på "Start", "Alla program", "Tillbehör", "Anteckningsblock" och spara filen med det filnamnet.

Steg 2

Skapa ditt klassgränssnitt genom att klistra in följande i filen du skapade i steg 1. Resten av stegen kommer att ägnas åt att fylla i koden för var och en av metoderna som definieras i detta steg:

offentlig klass kalkylark {

Länkad lista data = ny LinkedList(); offentligt kalkylblad () {} offentligt ogiltigt addRow () {} offentligt ogiltigt addRow (int index) {} offentligt ogiltigt removeRow (int index) {} offentligt ogiltigt removeColumn (int index) {} offentligt tomrum addColumn () {} offentligt tomt addColumn (int index) {} public void setCell (int x, int y, String newData) {} public int getWidth () {} public int getHeight () {} public String toString () {} / ** * Testa klassen, * / public static void main (String [] args) {} 

}

Den grundläggande datastrukturen kommer att vara en LinkedList av rader som innehåller en LinkedList av kolumner. Även om en enkel 2D-array skulle vara enklare att implementera, skulle det också vara mycket långsammare för många vanliga kalkylarkoperationer, särskilt att infoga och ta bort rader.

Steg 3

Klistra in följande kod mellan parenteserna för konstruktormetoden, "Kalkylark":

offentligt kalkylark () {addRow (); addColumn (); } 

Detta säkerställer helt enkelt att vi börjar med minst en enda rad och kolumn.

Steg 4

Klistra in följande för att fylla i de två addRow-metoderna. En tar inga argument och lägger automatiskt till raden i slutet av kalkylbladet, medan den andra tillåter användaren att ange var raden ska läggas till:

public void addRow () {data.addLast (ny LinkedList()); för (int x = 0; x ()); för (int x = 0; x 

Steg 5

Klistra in koden för att ta bort en rad i källfilen:

public void removeRow (int index) {data.remove (index); } 

Steg 6

Klistra in koden för de två addColumn-metoderna. Dessa fungerar på samma sätt som addRow-metoderna - det finns två, en för att lägga till en kolumn i slutet av arket och en för att infoga en kolumn i mitten:

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 ()); }} 

Steg 7

Klistra in koden för att ta bort kolumner:

public void removeColumn (int index) {för (LinkedList l: data) {l.remove (index); }} 

Steg 8

Klistra in koden som ställer in innehållet i en viss cell till en datasträng:

public void setCell (int x, int y, String newData) {data.get (x) .set (y, newData); } 

Steg 9

Fyll i metoderna för att få kalkylarkets bredd och höjd:

public int getWidth () {return data.getFirst (). storlek (); } public int getHeight () {return data.size (); } 

Steg 10

Implementera toString-metoden. Detta returnerar en formaterad sträng som visar data i kalkylbladet i en tabell med rader och kolumner:

public String toString () {String temp = ""; för (LinkedList l: data) {för (Object o: l) {String s = (String) o; if (s.equals ("")) s = "-empty-"; temp + = s + ""; } temp + = "\ n"; } retur temp; } 

Klistra in följande huvudmetod som placerar kalkylbladets datastruktur genom dess steg och säkerställer att allt fungerar som förväntat:

public static void main (String [] args) {Kalkylark = nytt kalkylark (); System.out.println (sheet.toString ()); System.out.print (sheet.getWidth ()); System.out.print ("x"); System.out.println (sheet.getHeight ()); sheet.addRow (); System.out.print (sheet.getWidth ()); System.out.print ("x"); System.out.println (sheet.getHeight ()); sheet.setCell (0,0, "1"); sheet.setCell (0,1, "2"); sheet.setCell (1,0, "3"); sheet.setCell (1,1, "4"); System.out.println (sheet.toString ()); sheet.addColumn (1); sheet.setCell (1,0, "TEMP"); sheet.setCell (1,1, "TEMP"); System.out.println (sheet.toString ()); sheet.removeRow (1); System.out.println (sheet.toString ()); sheet.removeColumn (1); System.out.println (sheet.toString ()); }