Come creare una struttura dati di un foglio di calcolo Java

Al livello più semplice, puoi creare una struttura dati per un foglio di calcolo in Java utilizzando un semplice array 2D. Tuttavia, questo approccio lascia molto a desiderare. Idealmente, una struttura di dati di un foglio di calcolo dovrebbe essere in grado di ridimensionare, inserire ed eliminare in modo efficiente intere righe e colonne e queste operazioni sono computazionalmente costose in un array Java, richiedendo a Java di ricostruire l'intera struttura di dati da zero dietro le quinte ogni volta che tale viene eseguita l'operazione.

Invece, dovresti usare qualcosa di un po' più sofisticato: un elenco collegato di elenchi collegati. Ciò consentirà l'inserimento e la rimozione di righe e colonne, nonché il ridimensionamento della tabella, in modo molto più rapido. Tuttavia, avrà un piccolo costo in termini di prestazioni quando arriva il momento di accedere a celle specifiche del foglio di calcolo fuori turno.

Passo 1

Crea un nuovo file Java e chiamalo "SpreadsheetStructure.java". Se hai un ambiente di sviluppo integrato (IDE) preferito, puoi farlo facendo clic su "File", "Nuova classe". In alternativa, puoi aprire il Blocco note di Windows facendo clic su "Start", "Tutti i programmi", "Accessori", "Blocco note" e salvando il file con quel nome.

Passo 2

Crea la tua interfaccia di classe incollando quanto segue nel file che hai creato nel passaggio 1. Il resto dei passaggi sarà dedicato alla compilazione del codice per ciascuno dei metodi definiti in questo passaggio:

Foglio di calcolo della classe pubblica {

Lista collegata data = nuovo 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() { } /** * Testa la classe, */ public static void main(String[] args) { } 

}

La struttura dati di base sarà un LinkedList di righe contenente un LinkedList di colonne. Sebbene un semplice array 2D sarebbe più semplice da implementare, sarebbe anche molto più lento per molte operazioni comuni sui fogli di calcolo, in particolare l'inserimento e l'eliminazione di righe.

Passaggio 3

Incolla il seguente codice tra le parentesi quadre del metodo del costruttore, "Foglio di calcolo":

Foglio di calcolo pubblico() { addRow(); addColumn(); } 

Ciò garantisce semplicemente di iniziare con almeno una singola riga e colonna.

Passaggio 4

Incolla quanto segue per compilare i due metodi addRow. Uno non accetta argomenti e aggiunge automaticamente la riga alla fine del foglio di calcolo, mentre l'altro consente all'utente di specificare dove aggiungere la riga:

public void addRow() { data.addLast(new 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()); } } 

Passaggio 5

Incolla il codice per rimuovere una riga nel file sorgente:

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

Passaggio 6

Incolla il codice per i due metodi addColumn. Questi funzionano in modo simile ai metodi addRow: ce ne sono due, uno per aggiungere una colonna alla fine del foglio e uno per inserire una colonna al centro:

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

Passaggio 7

Incolla il codice per rimuovere le colonne:

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

Passaggio 8

Incolla il codice che imposta il contenuto di una determinata cella su una stringa di dati:

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

Passaggio 9

Compila i metodi per ottenere la larghezza e l'altezza del foglio di calcolo:

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

Passaggio 10

Implementare il metodo toString. Ciò restituirà una stringa formattata che mostra, in una tabella di righe e colonne, i dati nel foglio di calcolo:

public String toString() { String temp = ""; for (LinkedList l : data) { for (Object o : l) { String s = (String) o; if (s.equals("")) s = "-vuoto-"; temperatura += s + " "; } temp += "\n"; } temperatura di ritorno; } 

Incolla il seguente metodo principale che mette alla prova la struttura dei dati del foglio di calcolo e garantisce che tutto funzioni come previsto:

public static void main(String[] args) { Spreadsheet sheet = new Spreadsheet(); System.out.println(sheet.toString()); System.out.print(sheet.getWidth()); System.out.print(" x "); System.out.println(sheet.getHeight()); foglio.addRow(); System.out.print(sheet.getWidth()); System.out.print(" x "); System.out.println(sheet.getHeight()); foglio.setCell(0,0,"1"); sheet.setCell(0,1,"2"); foglio.setCell(1,0,"3"); foglio.setCell(1,1,"4"); System.out.println(sheet.toString()); foglio.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()); }