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);
}
}
}
}
答案 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);
});