我将读取一个包含文本文件(总共 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 类型,对吗?
最佳答案
首先,为你的 map 添加一个容量:
HashMap<String,Double> pmi = new HashMap<String,Double>(2000);
默认容量为 16,每次需要增加时都会加倍(16..32..64..128..256.......)。
将所有内容加载到 map 中是一个坏主意,您应该使用临时数据库。
关于您的转换和优化,您能提供示例行吗?
关于Java、Hashmap、数据类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25098038/