Hvordan lage en Java-regnearkdatastruktur

På det enkleste nivået kan du lage en datastruktur for et regneark i Java ved hjelp av en enkel 2D-matrise. Imidlertid overlater denne tilnærmingen mye å være ønsket. Ideelt sett burde en regnearkdatastruktur effektivt kunne endre størrelse på, sette inn og slette hele rader og kolonner, og disse operasjonene er beregningsdyktige i en Java-matrise, og krever at Java gjenoppbygger hele datastrukturen fra bunnen av bak kulissene hver gang en slik operasjonen utføres.

I stedet bør du bruke noe litt mer sofistikert: en koblet liste over koblede lister. Dette gjør at innsetting og fjerning av rader og kolonner, samt at størrelsen på tabellen kan skje mye raskere. Imidlertid vil det medføre en liten ytelseskostnad når det er på tide å få tilgang til spesifikke celler i regnearket uten sving.

Trinn 1

Opprett en ny Java-fil og gi den navnet "SpreadsheetStructure.java." Hvis du har et favorittintegrert utviklingsmiljø (IDE), kan du gjøre dette ved å klikke "Fil", "Ny klasse." Alternativt kan du åpne Windows Notisblokk ved å klikke "Start", "Alle programmer", "Tilbehør", "Notisblokk" og lagre filen med det filnavnet.

Steg 2

Lag klassegrensesnittet ved å lime inn følgende i filen du opprettet i trinn 1. Resten av trinnene vil være dedikert til å fylle ut koden for hver av metodene som er definert i dette trinnet:

regneark for offentlig klasse {

LinkedList data = ny LinkedList(); offentlig regneark () {} 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 () {} / ** * Test klassen, * / public static void main (String [] args) {} 

}

Den grunnleggende datastrukturen vil være en LinkedList av rader som inneholder en LinkedList av kolonner. Selv om en enkel 2D-array ville være enklere å implementere, ville det også være mye tregere for mange vanlige regnearkoperasjoner, spesielt å sette inn og slette rader.

Trinn 3

Lim inn følgende kode mellom parentesene til konstruktormetoden, "Regneark":

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

Dette sikrer ganske enkelt at vi starter med minst en enkelt rad og kolonne.

Trinn 4

Lim inn følgende for å fylle ut de to addRow-metodene. Den ene tar ingen argumenter og legger automatisk til raden på slutten av regnearket, mens den andre lar brukeren spesifisere hvor raden skal legges til:

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

Trinn 5

Lim inn koden for å fjerne en rad i kildefilen:

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

Trinn 6

Lim inn koden for de to addColumn-metodene. Disse fungerer på samme måte som addRow-metodene - det er to, en for å legge til en kolonne på slutten av arket og en for å sette inn 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 ()); }} 

Trinn 7

Lim inn koden for fjerning av kolonner:

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

Trinn 8

Lim inn koden som setter innholdet i en gitt celle til en datastreng:

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

Trinn 9

Fyll ut metodene for å få bredden og høyden på regnearket:

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

Trinn 10

Implementere toString-metoden. Dette vil returnere en formatert streng som viser dataene i regnearket i en tabell med rader og kolonner:

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

Lim inn følgende hovedmetode som setter regnearkets datastruktur gjennom trinnene og sørger for at alt fungerer som forventet:

public static void main (String [] args) {Regneark = nytt 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 ()); }