У меня есть HashMap объявленИтерация дважды HashMap Java
static HashMap<String,ArrayList<Integer>> inverted_index = new HashMap<String,ArrayList<Integer>>();
я итерация над своими ключами, как
public static void printInvertedIndex() throws FileNotFoundException{
PrintWriter writer = new PrintWriter(new File("InvertedIndex.txt"));
Iterator it = inverted_index.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
writer.println(pair.getKey() + " " + pair.getValue());
it.remove();
}
writer.close();
}
Я сделал все это в функции, называемой printInvertedIndex(). Теперь в какой-то другой функции я хочу перебрать HashMap снова, так что я сделал это
public static void createPermutermIndex(){
permuterm_index.clear();
Iterator it = inverted_index.entrySet().iterator();
while (it.hasNext()) {
System.out.println("here");
Map.Entry pair = (Map.Entry)it.next();
String temp;
temp = pair.getKey() + "$";
ArrayList<String> perms = rotations(temp);
System.out.println(perms.size());
for(int i=0; i<perms.size(); i++)
System.out.println(perms.get(i));
//permuterm_index.put(temp, perms.get(i));
it.remove();
}
}
Но я не получаю «здесь», напечатанной во время вызова createPermutermIndex(). То есть, мой итератор не выполняет итерации над элементами inverted_index.
Есть ли способ, которым я могу повторить его снова?
Ваша 'inverted_index'' Карта явно пуста. – Mena
Почему вы используете сырой тип «Итератор»? Вы четко знаете о дженериках из вашей декларации «Карта». –
@BoristheSpider от моего личного опыта, использование дженериков и знание о них - совсем другая вещь. Вы можете сделать это раньше, чем раньше, если вы родились и выросли на Java 5+. – Mena