Java对表格的增删改查

表格是一种常见的数据结构,用于以表格形式整理和展示数据。在Java中,我们可以使用各种数据结构和库来实现对表格的增删改查操作。本文将介绍几种常见的方法,并提供相应的代码示例。

1. 使用数组实现表格

最简单的方法是使用二维数组来表示表格,其中每个元素表示一个单元格的值。以下是一个使用二维数组实现表格的示例代码:

public class ArrayTable {
    private Object[][] data;
    private int rows;
    private int columns;

    public ArrayTable(int rows, int columns) {
        this.rows = rows;
        this.columns = columns;
        this.data = new Object[rows][columns];
    }

    public Object getValue(int row, int column) {
        return data[row][column];
    }

    public void setValue(int row, int column, Object value) {
        data[row][column] = value;
    }
}

在上面的代码中,我们使用 data 数组来保存表格数据,rowscolumns 分别表示表格的行数和列数。通过 getValuesetValue 方法可以获取和设置单元格的值。

2. 使用集合框架实现表格

除了数组,我们还可以使用集合框架中的 ListMap 来实现表格。这种方法更加灵活,可以动态地添加、删除和修改表格数据。以下是一个使用 List<List<Object>> 实现表格的示例代码:

import java.util.ArrayList;
import java.util.List;

public class ListTable {
    private List<List<Object>> data;

    public ListTable() {
        this.data = new ArrayList<>();
    }

    public Object getValue(int row, int column) {
        return data.get(row).get(column);
    }

    public void setValue(int row, int column, Object value) {
        if (row >= data.size()) {
            for (int i = data.size(); i <= row; i++) {
                data.add(new ArrayList<>());
            }
        }
        List<Object> rowData = data.get(row);
        if (column >= rowData.size()) {
            for (int i = rowData.size(); i <= column; i++) {
                rowData.add(null);
            }
        }
        rowData.set(column, value);
    }
}

在上面的代码中,我们使用 data 列表保存表格数据,其中每个元素是一个包含单元格值的列表。通过 getValuesetValue 方法可以获取和设置单元格的值。需要注意的是,当设置超出表格原有行数或列数的值时,需要动态地调整数据结构。

3. 使用第三方库实现表格

除了自己实现表格数据结构,我们还可以使用第三方库来简化操作。Apache POI 是一个常用的Java库,可以用于读取和写入各种办公文档格式,包括Excel表格。以下是一个使用 Apache POI 实现表格增删改查的示例代码:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class PoiTable {
    private Workbook workbook;
    private Sheet sheet;

    public PoiTable() {
        this.workbook = new XSSFWorkbook();
        this.sheet = workbook.createSheet();
    }

    public void load(String filePath) throws IOException {
        FileInputStream fis = new FileInputStream(filePath);
        this.workbook = WorkbookFactory.create(fis);
        this.sheet = workbook.getSheetAt(0);
        fis.close();
    }

    public void save(String filePath) throws IOException {
        FileOutputStream fos = new FileOutputStream(filePath);
        workbook.write(fos);
        fos.close();
    }

    public Object getValue(int row, int column) {
        Row rowData = sheet.getRow(row);
        Cell cell = rowData.getCell(column);
        Object value = null;
        if (cell != null) {
            CellType cellType = cell.getCellType();
            switch (cellType) {
                case STRING:
                    value = cell.getStringCellValue();
                    break;
                case NUMERIC:
                    value = cell.getNumericCellValue();
                    break;
                case BOOLEAN:
                    value = cell.getBooleanCellValue();
                    break;
                case FORMULA:
                    value = cell.getCellFormula();
                    break;
                default:
                    break;
            }
        }
        return value;
    }

    public void setValue(int row, int column, Object value) {
        Row rowData = sheet.getRow(row);
        if (rowData == null) {
            rowData = sheet.createRow(row);
        }
        Cell cell = rowData.getCell(column);
        if (cell == null) {