Java,Hashmap,数据类型转换

时间:2014-08-02 18:15:46

标签: java file-io hashmap type-conversion

我要读一个包含文本文件(总共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类型,对吗?

2 个答案:

答案 0 :(得分:1)

首先,为地图添加容量:

HashMap<String,Double> pmi = new HashMap<String,Double>(2000);

默认容量为16,每次需要增加时它会加倍(16..32..64..128..256 .......)。

将所有内容加载到地图中是一个坏主意,您应该使用临时数据库。

关于转换和优化,您可以提供样品行吗?

答案 1 :(得分:0)

Split [3]超出界限.. 由于您的字符串拆分函数将返回一个大小为3的数组,其中startIndex = 0