0

我有一个文件,我从中读取数据并将它们放入jTable. 问题是当文件有很多数据(例如 300.000 行)时,我的应用程序需要大量内存(350MB)。有什么有效的方法可以在 a 中加载许多行JTable吗?

我创建了一个Default Model和一个这样的 Jtable:

DefaultTableModel model = new DefaultTableModel(array, colNames);
JTable data_table = new JTable();
data_table.setModel(model);

数组“array”包含数据,数组“colNames”包含列的名称。

4

3 回答 3

3

如果你想减少程序的内存消耗。您可以使用java.nio.channels.FileChannel文件的一部分并将其映射到主内存。

但是您必须重新加载/更改当前映射,具体取决于您的视图。
看一下该map方法的javadoc。


我不知道您的文件到底是什么,但如果您只是将它用作实际数据库的简单替代品。你最好用一个真正的。

于 2013-09-18T14:00:44.227 回答
3

使用嵌入式数据库,仅在模型中存储记录 ID,然后仅在需要过滤/排序行时存储。

于 2013-09-18T14:14:05.697 回答
3

如果没有足够的信息来提供特定的解决方案,您可能能够为数据的主键识别一个合理的分区函数,例如String前缀或Date范围。使用相邻控件TableModel根据选择进行更新。在此示例中,按钮用于更改图表的数据模型。要最小化延迟,请使用SwingWorker. 除了内存问题,您可能希望过滤表或将文件加载到内存数据库中,例如H2 Database

于 2013-09-18T14:14:25.453 回答