TreeMap дублирует ключи и не ставит значения - PullRequest
0 голосов
/ 21 мая 2018

f - это LinkedList с различными словами текста в нем. Я пытаюсь проанализировать список и поместить все в TreeMap (m) со словами в качестве ключа и количеством его, отображаемым в качестве значения.Мой код работает как-то, но не на 100%.Например, он производит вывод (m), например, «Er» = 6, Er. Здесь второму «Er» не назначено значение, и он каким-то образом не добавляется к первому ключу «Er».

 public void analysiere(){
    int value=1;
    for(String word: f){
        int check=0;
        if(Character.isAlphabetic(word.charAt(0))){

            for(String schlüssel: key){
                if(word.equals(schlüssel)){
                   m.put(schlüssel,m.get(schlüssel)+1);
                   check=1;
                }
            }
            if(check==0) {
                m.put(word, value);
            }


        }
    }


}

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Если честно, я не понимаю ваш код - попробуйте ответить на вопрос Сергея.Самый простой способ сделать то, что вы описали, это что-то вроде:

f.stream()
.filter(word -> Character.isAlphabetic(word.charAt(0)))
.forEach(word-> {
Integer currentNumber = m.getOrDefault(word,0);
currentNumber++;
m.put(word, currentNumber);
});
0 голосов
/ 21 мая 2018

Давайте немного упростим ваш код:

public void analysiere(List<String> words, Map<String, Integer> m) {
    for (String word : words) {
        if (Character.isAlphabetic(word.charAt(0))) {
            if (m.containsKey(word)) {
                m.put(word, m.get(word) + 1);
            } else {
                m.put(word, 1);
            }
        }
    }
}

Вам не нужна переменная check, потому что вы уже проверяете то же логическое условие, используя оператор if.

...