存储信息过去的程序运行时Java

时间:2015-11-27 21:05:29

标签: java persistence

我有一个运行和收集数据的终端/控制台java程序。我希望即使在程序退出后也能保存这些数据。数据采用两个ArrayLists的格式。

保存它们以供日后使用的最佳方法是什么?

我的想法:

  • 转换为GSON或JSON字符串 - >写文本文件

  • 创建数据库(不确定类型)保存 对其他想法持开放态度......

一个ArrayList有4500个项目,另外150个项目。两个数组都包含对象

我更喜欢速度学习曲线较低的东西,因为数据只会在开始执行时读取一次。

3 个答案:

答案 0 :(得分:0)

这取决于您的数据,但我建议将CSV作为一种简单的替代方案。将每一行视为ArrayList中的对象,并将每列视为属性。使用,分隔列 优点是,使用excel或类似工具更容易实现和阅读。

并使用Java File APIs将CSV保存到磁盘。

答案 1 :(得分:0)

答案很大程度上取决于ArrayList中存储的内容。

如果你要存储一个原语 - String,Int,你有什么 - CSV或一个简单的文件都没有错,每个数组条目都在它自己的行上。

如果ArrayList包含对象,那么像J(G)SON这样的格式化字符串是一个很好的方法,因为字段/值以有意义的方式存储。

或者XML,如果你喜欢那种东西(我不喜欢那种东西)。

答案 2 :(得分:0)

1主要任务不是编码,而是序列化(并解决深层问题,如果对象之间存在链接)。

我认为收集的数据不相关(它们之间没有链接)。

是可序列化的,你的班级必须是那样的

public class myclass implements Serializable

你应该(不是强制性的)在

中声明
private static final long serialVersionUID = 6569838532917408380L;

如果里面的任何内容也可序列化,那就没关系(标准类型是,集合,......)

2尺寸:4500现在很少。一个文件就足够了,如果要编写并重新加载(我认为对象不是太大)。

3为什么不二元=>基地64?它比JSON更自然......

串行

     String serial= DatatypeConverter.printBase64Binary(byteData);

deserial

     byte[] byteData_reverse=DatatypeConverter.parseBase64Binary(serial);