Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:从文件中存储/检索训练信息的最有效方法?_Java_File_Store_Flat - Fatal编程技术网

Java:从文件中存储/检索训练信息的最有效方法?

Java:从文件中存储/检索训练信息的最有效方法?,java,file,store,flat,Java,File,Store,Flat,我正在为班级做一个Java项目,它将训练信息存储在一个平面文件中。每个文件都有一个练习(BenchPress.data)的信息,其中包含时间(从历元开始的毫秒数)、重量和重复次数 例如: 1258355921365:245:12 1258355921365:245:10 1258355921365:245:8 存储和检索这些数据最有效的方法是什么?它将被绘制成图表并进行搜索,以将练习限制在特定日期或日期范围内 我的想法是把最新的信息写在文件的顶部,而不是附加在文件的末尾。这样,当我从顶部开始阅读

我正在为班级做一个Java项目,它将训练信息存储在一个平面文件中。每个文件都有一个练习(BenchPress.data)的信息,其中包含时间(从历元开始的毫秒数)、重量和重复次数

例如:

1258355921365:245:12

1258355921365:245:10

1258355921365:245:8

存储和检索这些数据最有效的方法是什么?它将被绘制成图表并进行搜索,以将练习限制在特定日期或日期范围内

我的想法是把最新的信息写在文件的顶部,而不是附加在文件的末尾。这样,当我从顶部开始阅读时,我将获得最新的信息,这将匹配大多数搜索(假设)

不过,日期的顺序没有保证。用户可以输入今天的练习,然后输入最后一周的练习,不管出于什么原因。我应该在保存时点击以在日期前订购所有信息吗

我应该走完全不同的方向吗?我知道数据库是理想的,但这是一个团队项目,在我们中间管理数据库安装和数据同步并不理想。其他人没有使用数据库的经验,这将使评分变得困难

谢谢你的建议


-John

通过
BufferedReader
读取每一行,并使用
StringTokenizer
进行解析。查看数据,我可能会在
列表中存储一组字段,这些字段可以根据您的喜好进行迭代和排序。

不要过于复杂。除非你处理的是数百万条记录,否则你可以把整条记录读入内存,然后按你喜欢的方式进行排序。最后一定要添加记录,这样你就不太可能损坏你的文件。

如果你必须以这种格式存储文件,你最好在启动时将整个文件读入内存,并将其存储在树状图或其他排序的、可搜索的图中。然后,您可以使用TreeMap的便利方法,例如或类似的floorKey,在某些日期/时间附近查找匹配项。

对于简单项目,使用嵌入式like/可能是一个好主意。DB的配置是绝对最小的,在您的情况下,您可能最多只需要2张桌子(用户和训练)。将数据导出到文件对于团队成员之间的同步也相当简单


正如yu_sha所指出的,除非希望有一个大数据集(在PC上运行,>50000),否则您可以使用该文件并将所有内容读入内存。

使用Java库,它允许解析和创建平面文件。用一个简单的XML定义文件描述该格式,然后就可以了。

为什么要使用字段数组?我会说,创建一个表示数据的类并将对象存储在列表中。为了提供自己的排序,最好使用类似数组的结构作为普通列表(而不是ArrayList),这并不能保证字段顺序。我建议使用
Collections
,因为我认为这是讲师希望看到的:)+1,在需要向文件格式添加新列时,使用数据库可以帮助您避免中断。