【发布时间】:2015-04-30 23:30:51
【问题描述】:
我有一个大约 32000 行的大文件。我在 Java 中对其内容进行了一些操作,所以我创建了一个更小的、缩小的文件来测试我的程序。它工作正常,但是当我使用实际文件(较大的一个,32000 行)时,它会爆炸,说:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at translator.MainLinkedHashMap.createLinkedHashMapFromString(MainLinkedHashMap.java:100)
at translator.MainLinkedHashMap.main(MainLinkedHashMap.java:25)
请注意 ArrayIndexOutOfBoundsException > 1。
我一直在调试,我看到我存储文件行的 LinkedHashMap 在调试器中有 30400 行而不是 32000 行。
这是否说明 Java 内存不足? (文件本身没那么大,2M,但是行很多。)
谢谢。
更新:代码如下:
private static LinkedHashMap<String, String> createLinkedHashMapFromString(String rawString) {
LinkedHashMap<String, String> resultMap = new LinkedHashMap<String, String>();
String [] values = rawString.split(",");
for (int i = 0; i < values.length; i++) {
values[i] = values[i].trim();
}
String [] pair = null;
for (String value : values) {
pair = value.split("=");
resultMap.put(pair[0], pair[1]);
}
return resultMap;
}
【问题讨论】:
-
不,它明确指出你的数组不够长,它的大小可能是 0 或 1,所以索引 1(你记得数组索引以 0 开头)超出了界限
-
请输入代码...您的
createLinkedHashMapFromString()方法是做什么的? -
@Lashane 我清楚地说它是 LinkedHashMap,而不是数组...
-
那是您的问题:您的“对”值之一没有“=”符号。
-
如果你的内存不足,你会得到
OutOfMemoryError:)
标签: java oop exception exception-handling indexoutofboundsexception