Java TreeMap复制关键点,并且不';不要把价值放在心上

Java TreeMap复制关键点,并且不';不要把价值放在心上,java,dictionary,treemap,Java,Dictionary,Treemap,f是一个链接列表,其中包含文本的不同单词。我试图分析该列表,并将所有内容放在一个树形图(m)中,以单词作为键,以单词的数量作为值。 我的代码以某种方式工作,但不是100%。例如,它产生一个输出(m),例如“Er”=6,在这里,第二个“Er”没有赋值,也没有以某种方式添加到第一个“Er”键 public void analysiere(){ int value=1; for(String word: f){ int check=0; if(Char

f是一个链接列表,其中包含文本的不同单词。我试图分析该列表,并将所有内容放在一个树形图(m)中,以单词作为键,以单词的数量作为值。 我的代码以某种方式工作,但不是100%。例如,它产生一个输出(m),例如“Er”=6,在这里,第二个“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);
            }


        }
    }


}

让我们稍微简化一下代码:

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);
            }
        }
    }
}
public void analysiere(列出单词,地图m){
for(字符串字:字){
if(Character.isAlphabetic(word.charAt(0))){
if(m.containsKey(word)){
m、 put(字),m.get(字)+1;
}否则{
m、 put(单词,1);
}
}
}
}

您不需要
check
变量,因为您已经使用
if
运算符检查了相同的逻辑条件。

老实说,我不理解您的代码-尝试回答@Sergey的问题。 我能想到的最简单的方法是:

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

代码中的“key”变量是什么?Set key=m.keySet();这是地图的钥匙集嘿,谢谢你的回答!我之所以使用check变量,是因为if正在遍历键,因此无法更改它(编译器就是这么说的)。您的代码提供与我的代码完全相同的输出。问题仍然存在:/@DiesDasAlex,您能否将示例“错误”输出添加到原始问题中?我相信某个地方的字符集/字母表有问题。