我想我明白了第一個說法。這就是說,如果「單詞」中的項目不在「頻率」中,則添加它們併爲其賦值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