考虑具有以下结构的巨大CSV(改性为简单起见):爪哇:同键映射的地图
ID, NAME, ADDRESS, PHONE, MAIL
1, Jon, UK, 403, [email protected]
2, Marc, UK, 292, [email protected]
3, Darin, France, 291, [email protected]
...
(Some million records)
为快速获取的自然数据结构是散列表,其中每ID
是一个关键和NAME, ADDRESS, PHONE, MAIL
是价值。我的dillema是价值观的数据结构。
将它存储在一个HashMap
,其中每个行标题是关键是浪费空间,因为每行的行标题完全相同。把它作为一个数组将失去每个项目的元数据,因为读者
我想的是两种方法:
超载Java的HashMap中。行标题将被存储一次,并且每个
ID
都将与一个字符串数组关联。get()
方法将被重载,以便它将返回标题行和行中相应字段之间的映射。创建一个哑类存储使用getter和setter每一行的数据(
row.getMail()
,row.getAddress()
,...)
什么是正确的方式去,在存储效率方面,类型安全和速度?
我确实有几百万条记录。 – 2012-03-05 11:39:56
在这种情况下,可能值得测试它是否足够重要(小于我不会打扰)。您仍然可以发现,虽然它节省了100 MB,但这只会意味着您的服务器的可用内存增加了100 MB,但保持代码更简单实际上是一个更好的主意。 – 2012-03-05 12:19:24
我会考虑这个 - 谢谢! – 2012-03-05 12:34:47