Sådan oprettes en Java Spreadsheet-datastruktur

På det enkleste niveau kan du oprette en datastruktur til et regneark i Java ved hjælp af et simpelt 2D-array. Denne tilgang lader imidlertid meget tilbage at ønske. Ideelt set skal en regnearkdatastruktur effektivt kunne ændre størrelse, indsætte og slette hele rækker og kolonner, og disse operationer er beregningsdygtige i et Java-array, hvilket kræver, at Java genopbygger hele datastrukturen fra bunden bag kulisserne hver gang en sådan operation udføres.

I stedet skal du bruge noget lidt mere sofistikeret: en sammenkædet liste over sammenkædede lister. Dette vil gøre det muligt for indsættelse og fjernelse af rækker og kolonner samt størrelsen af ​​tabellen at ske meget hurtigere. Det kommer dog med en lille præstationsomkostning, når det er tid til at få adgang til specifikke celler i regnearket uden for tur.

Trin 1

Opret en ny Java-fil, og navngiv den "SpreadsheetStructure.java." Hvis du har et foretrukket integreret udviklingsmiljø (IDE), kan du gøre dette ved at klikke på "File", "New Class." Alternativt kan du åbne Windows Notesblok ved at klikke på "Start", "Alle programmer", "Tilbehør", "Notesblok" og gemme filen med det filnavn.

Trin 2

Opret din klassegrænseflade ved at indsætte følgende i filen, du oprettede i trin 1. Resten af ​​trinene er dedikeret til at udfylde koden for hver af de metoder, der er defineret i dette trin:

offentlig klasse regneark {

LinkedList data = ny LinkedList(); offentlig regneark () {} offentlig ugyldig addRow () {} offentlig ugyldig addRow (int-indeks) {} offentlig ugyldig removeRow (int-indeks) {} offentlig ugyldig fjern Kolonne (int-indeks) {} offentlig ugyldig addColumn () {} offentlig ugyldig addColumn (int index) {} public void setCell (int x, int y, String newData) {} public int getWidth () {} public int getHeight () {} public String toString () {} / ** * Test klassen, * / public static void main (String [] args) {} 

}

Den grundlæggende datastruktur vil være en LinkedList af rækker, der indeholder en LinkedList af kolonner. Selvom et simpelt 2D-array ville være enklere at implementere, ville det også være meget langsommere for mange almindelige regnearkoperationer, især indsættelse og sletning af rækker.

Trin 3

Indsæt følgende kode mellem parenteserne til konstruktormetoden, "Regneark":

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

Dette sikrer simpelthen, at vi starter med mindst en enkelt række og kolonne.

Trin 4

Indsæt følgende for at udfylde de to addRow-metoder. Den ene tager ingen argumenter og tilføjer automatisk rækken i slutningen af ​​regnearket, mens den anden giver brugeren mulighed for at specificere, hvor rækken skal tilføjes:

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

Trin 5

Indsæt koden for at fjerne en række i din kildefil:

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

Trin 6

Indsæt koden til de to addColumn-metoder. Disse fungerer på samme måde som addRow-metoderne - der er to, en til at tilføje en kolonne i slutningen af ​​arket og en til at indsætte en kolonne i midten:

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

Trin 7

Indsæt koden til fjernelse af kolonner:

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

Trin 8

Indsæt koden, der indstiller indholdet af en given celle til en datastreng:

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

Trin 9

Udfyld metoderne til at få regnearkets bredde og højde:

public int getWidth () {return data.getFirst (). størrelse (); } public int getHeight () {return data.size (); } 

Trin 10

Implementér toString-metoden. Dette returnerer en formateret streng, der viser dataene i regnearket i en tabel med rækker og kolonner:

offentlig String toString () {String temp = ""; for (LinkedList l: data) {for (Object o: l) {String s = (String) o; hvis (s.equals ("")) s = "-empty-"; temp + = s + ""; } temp + = "\ n"; } retur temp; } 

Indsæt følgende hovedmetode, der sætter regnearkets datastruktur gennem sine skridt og sikrer, at alt fungerer som forventet:

public static void main (String [] args) {Regneark = nyt regneark (); 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 ()); ark.addKolonne (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 ()); }