我试图读入一个hashmap<string,arraylist>,它存储在一个.txt文件中,然后把它放到程序中的一个新hashmap中。当我运行代码时,所有的东西都按应该的方式放置在Map中,读入的键和值都位于它们的正确位置。然而,Map似乎也是无限的。我不得不被迫终止程序,因为它没完没了地打印。当放入word文件时,程序读入的Map大约是半页。然而,输出是超过175页的反复输入。我敢肯定,如果eclipse的控制台没有字符限制的话,它会持续更长的时间。
我将问题隔离到以下内容:
File grammarMap = new File("C:\\Users\\emily\\eclipse-workspace\\markov-chains\\src\\grammarMap.txt");
Scanner scan = new Scanner(grammarMap);
String readGrammar = scan.nextLine();
ArrayList<String> arr = new ArrayList<String>();
int amount = 0;
for(int i = 0; i<readGrammar.length()-3; i++) {
int start = 0;
if(readGrammar.substring(i,i+2).equals("{\"")) {
start = i+2;
}
else if(readGrammar.substring(i,i+3).equals("],")) {
start = i+3;
}
else if(readGrammar.substring(i,i+1).equals("=")) {
temp.put(readGrammar.substring(start,i-2), new ArrayList<String>());
}
}
for(int i = 0; i < readGrammar.length()-2; i++) {
int start = 0;
if(readGrammar.substring(i,i+1).equals("[")) {
start = i+1;
}
else if(readGrammar.substring(i,i+2).equals(" \"")) {
start= i+2;
}
else if(readGrammar.substring(i,i+1).equals("]")) {
arr.add(readGrammar.substring(start,i-2));
}
else if(readGrammar.substring(i,i+2).equals(", ")) {
arr.add(readGrammar.substring(start,i-2));
}
}
ArrayList<String> tempArr = new ArrayList<String>();
int count = 0;
for(String key : temp.keySet()) {
tempArr.add(key);
count++;
System.out.println(key + count);
}
for (int j = 0; j < arr.size()-1; j++) {
if(!temp.containsKey(arr.get(j))) {
temp.put(arr.get(j), arr);
}
else {
temp.get(arr.get(j)).add(arr.get(j+1));
}
}
scan.close();
暂无答案!
目前还没有任何答案,快来回答吧!