No nível mais simples, você pode criar uma estrutura de dados para uma folha de cálculo em Java usando uma matriz 2D simples. No entanto, esta abordagem deixa muito a desejar. Idealmente, uma estrutura de dados planilha deve ser capaz de redimensionar de forma eficiente, inserir e excluir linhas e colunas inteiras, e essas operações são computacionalmente caro em uma matriz de Java, exigindo Java para reconstruir toda a estrutura de dados a partir do zero nos bastidores cada vez que tal a operação é realizada.
Em vez disso, você deve usar algo um pouco mais sofisticado: uma lista encadeada de listas ligadas. Isto irá permitir a inserção e remoção de linhas e colunas, bem como o redimensionamento da tabela acontecer muito mais rapidamente. No entanto, ele virá com um custo de desempenho pequeno quando chega a hora de acessar células específicas da folha de cálculo para fora do turno.
Criar um novo arquivo Java e nomeá-la "SpreadsheetStructure.java." Se você tem um favorito Integrated Development Environment (IDE), você pode fazer isso clicando "Arquivo," "Nova classe." Alternativamente, você pode abrir o Bloco de Notas do Windows clicando em "Começar," "Todos os programas," "Acessórios," "Bloco de anotações" e salvar o arquivo com o nome do arquivo.
Crie a sua interface de classe, colando o seguinte no arquivo criado na Etapa 1. O restante das etapas será dedicado ao preenchimento do código para cada um dos métodos definidos nesta etapa:
Spreadsheet classe pública {
LinkedList
data = new LinkedList (); Spreadsheet pública () {}
addRow public void () {}
addRow public void (int index) {}
RemoveRow public void (int index) {}
removeColumn public void (int index) {}
addColumn public void () {}
addColumn public void (int index) {}
setCell public void (int x, int y, String newData) {}
getWidth int pública () {}
getHeight int pública () {}
public String toString () {}
/ **
* Teste a classe,
* /
void main (String [] args) public static {}
}
A estrutura básica de dados será um LinkedList de linhas contendo um LinkedList de colunas. Apesar de uma matriz 2D simples seria mais simples de implementar, também seria muito mais lento para muitas operações comuns de planilha, especialmente inserir e excluir linhas.
Cole o seguinte código entre parêntesis do método construtor, "Planilha":
Spreadsheet pública () {
adicionar linha();
addColumn ();
}
Isso simplesmente garante que começamos com, pelo menos, uma única linha e coluna.
Cole o seguinte para preencher os dois métodos addRow. Um não tem argumentos e adiciona automaticamente a linha no final da planilha, enquanto o outro permite que o usuário especifique onde adicionar a linha:
addRow public void () {
data.addLast (new LinkedList
()); for (int x = 0- x lt; getHeight () - x ++) {
. Data.getLast () add (new String ());
}
}
addRow public void (int index) {
data.add (index, new LinkedList
()); for (int x = 0- x lt; getHeight () - x ++) {
data.get (index) .Add (new String ());
}
}
Cole o código para remover uma linha em seu arquivo de origem:
RemoveRow public void (int index) {
data.remove (index);
}
Cole o código para os dois métodos AddColumn. Estes funcionam de modo semelhante aos métodos AddRow - existem dois, um para a adição de uma coluna para a extremidade da folha e uma para a inserção de uma coluna no meio:
addColumn public void () {
for (LinkedList l: Dados) {
l.addLast (new String ());
}
}
addColumn public void (int index) {
for (LinkedList l: Dados) {
l.add (index, new String ());
}
}
Cole o código para remover colunas:
removeColumn public void (int index) {
for (LinkedList l: Dados) {
l.remove (index);
}
}
Cole o código que define o conteúdo de uma determinada célula de uma cadeia de dados:
setCell public void (int x, int y, String newData) {
data.get (x) .set (y, newData);
}
Preencha os métodos para obter a largura e altura da planilha:
getWidth int pública () {
voltar data.getFirst () size ().;
}
getHeight int pública () {
regresso data.size ();
}
Implementar o método toString. Isso irá retornar uma string formatada exibindo, em uma tabela de linhas e colunas, os dados na planilha:
public String toString () {
Cordas temp = "";
for (LinkedList l: Dados) {
for (Object o: l) {
String s = (String) o;
if (s.equals ("")) S = "-vazio-";
Temp = + s + " ";
}
Temp + = " n";
}
regresso temporário;
}
Cole o seguinte método main que coloca a estrutura de dados da planilha com seus ritmos e assegura que tudo funciona conforme o esperado:
main (String [] args) public static void {
folha de planilha = new Spreadsheet ();
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 ());
}