Java、Hashmap、数据类型转换

标签 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 类型,对吗?

最佳答案

首先,为你的 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/

相关文章:

java - 如何确定HashMap中方法的最坏情况复杂度?

java - 如何采用相同格式输出 2.5 和 2,5?

java - 在 eclipse (java) 中查看创建的文件

java - 省略屏幕外三角形

c++ - IRLBot Paper DRUM 实现 - 为什么将键、值对和辅助存储桶分开?

iphone - 如何在 Windows 机器中打开 Iphone .plist 文件?

java - 弱 HashMap 在取消引用后会立即释放内存吗?

java - 显示 HashMap 中的所有碰撞

java - 从字符串中拆分数据

java - 我如何在 Java 中将 String 读入 inputStream?