HashMap 中的 ArrayIndexOutOfBoundException
ArrayIndexOutOfBoundException in HashMap
public class ReadToHashmap {
public static void main(String[] args) throws Exception {
Map<String, String> map = new HashMap<String, String>();
BufferedReader in = new BufferedReader(new FileReader("example.tab"));
String line = "";
while ((line = in.readLine()) != null) {
String parts[] = line.split("\t");
map.put(parts[0], parts[1]);
}
in.close();
System.out.println(map.toString());
}
}
在 HashMap
中插入带有值的键时,我收到 ArrayIndexOutOfBoundException
异常:-
map.put(parts[0], parts[1]);
String parts[] = line.split("\t");
因为您期望每个输入 String
将由制表符 space 分隔。但至少一个输入不会发生这种情况。请检查输入。这就是为什么你在这里得到一个例外。
map.put(parts[0], parts[1]);
要调试它,您可以在将它们放入 HashMap
之前将内容 (line
) 和长度 (parts.length
) 打印到 System.out
。
也许你可以替换
map.put(parts[0], parts[1]);
和
if(parts!=null && parts.length>=2)
map.put(parts[0], parts[1]);
您正在尝试将 line
与 tab
拆分,并且可以肯定它们不会被拆分,这就是为什么它给您 ArrayIndexOutOfBoundException in HashMap
。
如果你正在使用任何 IDE 然后调试它。
并确保 TAB
等于 4-spaces 而不是 2-spaces 正如你提到的,这是不拆分的原因。
更新
除了你的问题之外,如果你是从某种逻辑中获取它的,那么在使用集合数组之前总是使用空值检查和大小检查,因为你需要最小长度为 2。
while ((line = in.readLine()) != null) {
String parts[] = line.split("\t");
map.put(parts[0], parts[1]);
}
宁愿使用
while ((line = in.readLine()) != null) {
String parts[] = line.split("\t");
if(parts!=null && parts.length>=2){
map.put(parts[0], parts[1]);
}
}
public class ReadToHashmap {
public static void main(String[] args) throws Exception {
Map<String, String> map = new HashMap<String, String>();
BufferedReader in = new BufferedReader(new FileReader("example.tab"));
String line = "";
while ((line = in.readLine()) != null) {
String parts[] = line.split("\t");
map.put(parts[0], parts[1]);
}
in.close();
System.out.println(map.toString());
}
}
在 HashMap
中插入带有值的键时,我收到 ArrayIndexOutOfBoundException
异常:-
map.put(parts[0], parts[1]);
String parts[] = line.split("\t");
因为您期望每个输入 String
将由制表符 space 分隔。但至少一个输入不会发生这种情况。请检查输入。这就是为什么你在这里得到一个例外。
map.put(parts[0], parts[1]);
要调试它,您可以在将它们放入 HashMap
之前将内容 (line
) 和长度 (parts.length
) 打印到 System.out
。
也许你可以替换
map.put(parts[0], parts[1]);
和
if(parts!=null && parts.length>=2)
map.put(parts[0], parts[1]);
您正在尝试将 line
与 tab
拆分,并且可以肯定它们不会被拆分,这就是为什么它给您 ArrayIndexOutOfBoundException in HashMap
。
如果你正在使用任何 IDE 然后调试它。
并确保 TAB
等于 4-spaces 而不是 2-spaces 正如你提到的,这是不拆分的原因。
更新
除了你的问题之外,如果你是从某种逻辑中获取它的,那么在使用集合数组之前总是使用空值检查和大小检查,因为你需要最小长度为 2。
while ((line = in.readLine()) != null) {
String parts[] = line.split("\t");
map.put(parts[0], parts[1]);
}
宁愿使用
while ((line = in.readLine()) != null) {
String parts[] = line.split("\t");
if(parts!=null && parts.length>=2){
map.put(parts[0], parts[1]);
}
}