Попробуйте вместо этого:
while (contentItr.hasNext()) {
String word = (String) contentItr.next();
if (wordIndex.containsKey(word)) {
LinkedList temp = (LinkedList) w.get(word);
temp.addLast(currentUrl);
} else {
LinkedList temp = new LinkedList();
temp.add(currentUrl);
w.put(word, temp);
}
}
Проблема, как вы можете видеть, была в строке, которая добавляет новый элемент на карту - метод add
возвращает логическое значение, и это то, что было добавлено на карту. Приведенный выше код устраняет проблему и добавляет на карту то, что вы намеревались - LinkedList.
В качестве примечания рассмотрите возможность использования универсальных типов в вашем коде, чтобы избежать подобных ошибок. Я постараюсь угадать типы из вашего кода (скорректируйте их при необходимости, вы поймете идею), скажем, у вас есть эти объявления где-то в вашей программе:
Map<String, String> wordIndex = new HashMap<String, String>();
Map<String, LinkedList<String>> w = new HashMap<String, LinkedList<String>>();
List<String> content = new ArrayList<String>();
Iterator<String> contentItr = content.iterator();
При этом можно безопасно написать фрагмент кода в вашем вопросе, избегая ненужных приведений и ошибок типа, подобных той, что у вас была:
while (contentItr.hasNext()) {
String word = contentItr.next();
if (wordIndex.containsKey(word)) {
LinkedList<String> temp = w.get(word);
temp.addLast(currentUrl);
} else {
LinkedList<String> temp = new LinkedList<String>();
temp.add(currentUrl);
w.put(word, temp);
}
}
EDIT
Согласно комментариям ниже - при условии, что вы на самом деле можете заменить LinkedList
на ArrayList
(что может быть быстрее для некоторых операций) и что только * Специфический метод 1025 *, который вы используете - addLast
(который является синонимом add
), приведенный выше код можно переписать следующим образом, в более объектно-ориентированном стиле, используя интерфейсы вместо конкретных классов для контейнеров:
Map<String, String> wordIndex = new HashMap<String, String>();
Map<String, List<String>> w = new HashMap<String, List<String>>();
List<String> content = new ArrayList<String>();
Iterator<String> contentItr = content.iterator();
while (contentItr.hasNext()) {
String word = contentItr.next();
if (wordIndex.containsKey(word)) {
List<String> temp = w.get(word);
temp.add(currentUrl);
} else {
List<String> temp = new ArrayList<String>();
temp.add(currentUrl);
w.put(word, temp);
}
}