在基于Java的解析器中管理主表的最有效方法

在基于Java的解析器中管理主表的最有效方法,java,swing,Java,Swing,我正在从事一个基于Swing的项目,该项目将使用表组件显示大量数据。我正试图决定在效率和解析数据管理方面,什么是最好的替代方案。主表可以操作,即可以创建或删除完整数据的视图,因此完整数据需要保存在内存中 我知道这类问题有很多不同的解决方案。我想创建一个类,表示日志中的一个条目,属性表示日志中的每个“属性”。我可以使用Comparator对象根据这些字段进行排序,并使用这些对象构建表组件。 如果条目总数在5000-10000行之间,这可能不是一个好主意 收到关于管理此类数据并对其执行操作以呈现图形

我正在从事一个基于Swing的项目,该项目将使用表组件显示大量数据。我正试图决定在效率和解析数据管理方面,什么是最好的替代方案。主表可以操作,即可以创建或删除完整数据的视图,因此完整数据需要保存在内存中

我知道这类问题有很多不同的解决方案。我想创建一个类,表示日志中的一个条目,属性表示日志中的每个“属性”。我可以使用Comparator对象根据这些字段进行排序,并使用这些对象构建表组件。 如果条目总数在5000-10000行之间,这可能不是一个好主意

收到关于管理此类数据并对其执行操作以呈现图形组件的良好做法的任何建议


没有提供太多的细节,所以我基本上是在寻找如何解决这个问题的一般思路。

我假设所有文件都已解析,并且解析数据的内存表示形式 在显示表格时可用。您需要有自己的tablemodel,它从解析的文件中获取数据

以下内容可以作为您的表格模型:


据我所知,有关语法分析的内容与问题无关。您想知道如何在Swing GUI中实现一个大表。对的如果是这样,请编辑问题和主题以删除无关内容。我删除了解析注释。是的,它基本上是处理如何管理内存中要在Swing表组件上呈现的大量数据
class MyTableModel extends AbstractTableModel {
    private final List<String> columnNames;
    private List<RowData>      rows;

    MyTableModel() {
        columnNames = new ArrayList<String>();
        columnNames.add("Name");
        //...
        rows = new ArrayList<RowData>();
    }

    // populate the table data model with a List
    // that contains parsed data, each list element 
    // could correspond to a record or line (say)
    void setCoreData(final List<RowData> data) {
        this.rows = data;
    }

    public Object getValueAt(final int pRow, final int pCol) {
        if (getColumnName(pCol).equals("Name")) {
            return rows.get(pRow).getName();
        }
        //... .

    }

// corresponds to the rows of table instances of which 
// are created by output of parsing
private class RowData {
    private String name;

    public Object getName() {
        return name;
    }
}

// table instantitaion can be as below (say)
JTable myTable = new JTable(new MyTableModel());