TreeMap重复键并且不放置值

时间:2018-05-21 09:28:43

标签: java dictionary treemap

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 :(得分:0)

让我们简化一下你的代码:

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运算符检查了相同的逻辑条件。

答案 1 :(得分:0)

说实话,我不理解你的代码 - 试着回答@ Sergey的问题。 我能想到做你所描述的最简单的方法就是:

f.stream()
.filter(word -> Character.isAlphabetic(word.charAt(0)))
.forEach(word-> {
Integer currentNumber = m.getOrDefault(word,0);
currentNumber++;
m.put(word, currentNumber);
});