有类Person{
int age;
String name;
}
要将Person的N个object(>100000)按照产生的顺序保存下来,然后按照插入的顺序读取,因为程序运行有时间限制,不能一次处理完,所以我考虑是不是可以将这些object存到文件里,然后在下一次程序运行的时候读取出来,可是一来我不懂如何将类存到文件中然后读取出来,二来是想问问大家是不是有更好的方式能够解决我的问题,实现object的队列。谢谢
int age;
String name;
}
要将Person的N个object(>100000)按照产生的顺序保存下来,然后按照插入的顺序读取,因为程序运行有时间限制,不能一次处理完,所以我考虑是不是可以将这些object存到文件里,然后在下一次程序运行的时候读取出来,可是一来我不懂如何将类存到文件中然后读取出来,二来是想问问大家是不是有更好的方式能够解决我的问题,实现object的队列。谢谢
http://blog.csdn.net/randyjiawenjie/article/details/6438267。
实现队列,直接用标准的集合类就可以了,List<Person>
建立一张表 person 字段1 id(存储顺序) 字段2 age 字段3 name
程序在运行的时候吧Person 一个一个存储到表里 下次运行就读取表 存储到 List<Person>里就行了没有数据库 用文件也行
String = id(存储顺序)+":"+ Person.age+":"+Person.name+"\n"
一个Person 一行数据存储到文件中
下次运行就读文件 存储到 List<Person>里就行了
jdk有自带的队列实现,或者可以很容易的自己去构建队列
但是,对象的量级已经超过10w,那么放在内存中已经不现实,因此,lz放到文件或硬盘上自己的想法,我觉得还是可行
简单的一种就是ehcache,选择把对象存储在文件或硬盘上,然后按照队列处理的策略来对这些对象进行业务处理
或者i/o流
先进先出,要不停的插入数据和删除最先加入的数据.用ArrayList是明显不适合的.
另外100000个person对象放内存中,大概算了下,也不会占用太多内存,应该在10M以内吧,可以考虑直接放内存里面.
何必要等到循环结束了 文件中的所有Person记录都读取出来了再做操作呢
当然如果Person类只是个举例就另当别论如果Person类很大,或者远超10万个,更好的办法是检查设计思路,避免一次创建完所有对象要比用文件缓存更好。文件缓存的开销毕竟不小,无论从运行时间、代码复杂度或是错误风险来说。
比如分100次都进来,每一次都进来进行操作,然后输出到文件;然后清空List,读入下一组。