我想我明白了第一个说法。这就是说,如果“单词”中的项目不在“频率”中,则添加它们并为其赋值1,对不对? 我更困惑的是为什么“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',所以'else'在遇到第二个时被执行。 –
如果'!frequencies.containsKey(elements)'没有得到执行else子句(请注意,由于可能导致混淆,变量被称为'elements'而不是'element'')。你问的是错误的问题。 – Gendarme
调试它并按照步骤操作。你的期望什么时候执行什么可能是错误的。 – blafasel