可能重复:
Object attributes to same-length representation for faster reading
我想将我的对象写入一个文件,其中每个对象的表示长度相同,所以我可以跳转到文件的一部分来阅读,而不必阅读整个文件。
这是必要的,因为许多虚拟机将读取该文件,并且其大小将为TB。这样做的最佳方法是什么?我已经尝试将它们放入一组int中以试图实现这一点,但似乎这一步必须是不必要的。我将每个对象一次传回一个由不同的编写器对象写入。干杯
// Convert Person attributes to integers and put in an array
int[] person = new int[8];
person[0] = age;
if (gender.equals("m")) {person[1] = 1;}
else {person[1] = 0;}
person[2] = children;
person[3] = goodHealth? 1:0;
person[4] = cars;
person[5] = avgWeekShopping;
person[6] = salary;
person[7] = smoker? 1:0;
return person;
答案 0 :(得分:1)
如果将值写入字节数组,速度会更快。这可以直接写入任何输出流。而且你可以节省一些空间,比如在一个字节中编码吸烟者标志。
所以你需要静态方法,一个接受bean并返回byte[]
的方法,另一个接受byte[]
并创建一个新bean。所有数组都是相同的大小,您可以轻松计算各个数据集的偏移量,而无需额外的索引文件。