У меня есть исходный HashMap на Java:
HashMap<String, Integer> keyWordFrequencies;
Хранение ключевых слов различной длины. Я хочу пройтись по этой HashMap и вычислить длину ngram, хранящихся в части String карты, которая определяет текст каждого ключевого слова.
Этими данными я хочу заполнить целевой ArrayList HashMaps:
ArrayList<HashMap<String, Integer>> keywordNgrams;
С результатами, где индекс ArrayList соответствует размеру ngram заданного ключевого слова минус один, т. е. keywordNGrams (0) получит униграммы, keywordNGrams (1) получит биграммы и так далее. Но я не уверен в необходимом синтаксисе. Обход исходного HashMap достаточно прост:
Set keyWordFrequenciesSet = keyWordFrequencies.entrySet();
Iterator keyWordFrequenciesIterator = keyWordFrequenciesSet.iterator();
while(keyWordFrequenciesIterator.hasNext()) {
Map.Entry m = (Map.Entry) keyWordFrequenciesIteratorIterator.next();
int ngramLength = String_Utils.getLengthOfNgram(m.getKey().toString());
Add element to keywordNgrams?
Но добавление элемента в целевой ArrayList HashMap меня смущает. Я пытался:
keywordNgrams.add(ngramLength, m);
И разные варианты, но безрезультатно. m должен быть элементом HashMap, а не HashMap сам по себе. Кто-нибудь может подсказать, где я ошибаюсь?
В идеале я хотел бы один раз пройтись по исходному HashMap keyWordFrequencies, а для начала массив keywordNgrams инициализируется до максимально возможного размера ngram.
String
доInteger
, но теперь я понял. Я обновлю свой ответ соответственно. 14.09.2012key.toString()
, и вам не нужно приводить кInteger
, пока вы сохраняете типы для начала: посколькуkeyWordFrequencies
имеет типHashMap<String, Integer>
, о приведениях уже нужно позаботиться. для вас компилятором. 14.09.2012keywordNgrams(0)
хранит униграммы,keywordNgrams(1)
хранит биграммы и их частоты, аkeywordNgrams(2)
хранит триграммы и так далее. на. Я полагаю, что альтернативой было бы просто иметь одну действительно длинную целевую HashMap, хранящую все uni, bi и trigrams вместе, но это, возможно, менее гибко. Спасибо за вашу помощь. 14.09.2012