我要读一个包含文本文件(总共7GB)的文件夹(wiki-pmi)并将它们放在一个hashmap中。文本文件的每一行都是:地球物理毕业0.1321
我写了以下代码:
HashMap<String,Double> pmi = new HashMap<String,Double>();
File folder = new File("wiki-pmi");
String line;
File[] listofFiles = folder.listFiles();
for(File file: listofFiles)
{
if(file.isFile())
{
BufferedReader br1 = new BufferedReader(new FileReader(file));
while((line=br1.readLine())!=null)
{
String[] split=line.split(" ");
pmi.put(split[0]+ ","+ split[1], Double.parseDouble(split[2]));
}
}
}
但是,在Eclipse上运行后,我收到以下错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at NLP.main(NLP.java:30)
指向(java:30)到
pmi.put(split[0]+ ","+ split[1], Double.parseDouble(split[3]));
我想我无法从String类型转换为Double类型,对吗?
答案 0 :(得分:1)
首先,为地图添加容量:
HashMap<String,Double> pmi = new HashMap<String,Double>(2000);
默认容量为16,每次需要增加时它会加倍(16..32..64..128..256 .......)。
将所有内容加载到地图中是一个坏主意,您应该使用临时数据库。
关于转换和优化,您可以提供样品行吗?
答案 1 :(得分:0)
Split [3]超出界限.. 由于您的字符串拆分函数将返回一个大小为3的数组,其中startIndex = 0