我有一个运行和收集数据的终端/控制台java程序。我希望即使在程序退出后也能保存这些数据。数据采用两个ArrayLists的格式。
保存它们以供日后使用的最佳方法是什么?
我的想法:
转换为GSON或JSON字符串 - >写文本文件
创建数据库(不确定类型)保存 对其他想法持开放态度......
一个ArrayList有4500个项目,另外150个项目。两个数组都包含对象
我更喜欢速度学习曲线较低的东西,因为数据只会在开始执行时读取一次。
答案 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);