1
我正在使用哈希表實現一個包,並且我試圖計算我的哈希映射中元素的頻率,並且我一直得到的應該是一個小於它的值。計算哈希映射中元素的頻率
這是我的地圖
private Map <Integer, Integer> map = new HashMap<>();
這是我的add方法
public void add(int element) {
//containsKey
//checks if the element is already there
if (map.containsKey(element)){
Integer numElt = map.get(element);
map.put(element, (numElt+1)); //line where it should increment number of keys if the element is already there
count++;
}
else {
map.put(element, 1);
count++;
}
}
和我的頻率
public int freq(int element) {
Integer numE = map.get(element);
int k = Collections.frequency(map.values(), numE);
return k;
}
如果我寫我的測試,像這樣
Bag b = new Bag():
b.add(4)
b.add(5)
b.add(5)
assertTrue(2, b.freq(5))
應該返回2,但它返回1,不知道這是爲什麼,我很抱歉,如果這似乎是一個明顯的錯誤,我是新來的包實施
你的地圖中的值代表什麼? –
我不知道你爲什麼會返回k,而不是freE中的numE?我誤解了你的問題嗎?在你的測試中,地圖將是{4:1,5:2}。如果你正在尋找「2」,map.get(5)會返回它。 – leonz