私は最初の声明を理解すると思います。言葉の中の項目が「頻度」にない場合は、それらを追加し、それぞれに1の値を割り当てます。 私がもっと混乱しているのは、なぜ "else"ブロックが実行され、どのように動作するのかです。私はアウトプットを理解していますが、それがどのように機能するかは分かりません特定の単語が複数回現れることは明らかですが、それをどのように認識していますか?もう一度、なぜ最初の文が真であれば "else"ブロックに移動しますか?forループで "else"コードブロックが実行されるのはなぜですか?
public class Testing {
static List<String> list() {
List<String> words = new ArrayList<String>();
words.add("Cherry");
words.add("Banana");
words.add("Apple");
words.add("Banana");
words.add("Berry");
return words;
}
static Map<String, Integer> ArrayFrequencies(List<String> words) {
Map<String, Integer> frequencies = new HashMap<String, Integer>();
for (String elements : words) {
if (!frequencies.containsKey(elements)) {
frequencies.put(elements, 1);
} else {
frequencies.put(elements, frequencies.get(elements) + 1);
}
}
return frequencies;
}
public static void main(String[] args) {
System.out.println(ArrayFrequencies(list()));
}
}
出力:{アップル= 1、チェリー= 1、ベリー= 1、バナナ= 2}
キーがマップ内に既に存在する場合、それが実行されます。たとえば、入力に 'Banana'を2回入れたので、2回目に遭遇すると' else'が実行されます。 –
'!frequencies.containsKey(elements)'(変数が混乱の原因となる可能性があるため、 'element'の代わりに' elements'ではなく 'elements'と呼ばれていることを知らないことに注意してください)のelse節は実行されません。あなたは間違った質問をしています。 – Gendarme
デバッグし、手順に従います。あなたの期待は間違っているときに実行されるものです。 – blafasel