我想迭代一個HashSet
的Integer對象,我想要計算一個元素出現的次數。這是我的方法到目前爲止迭代HashSet爲每個
public int freq(int element) {
int numElements = 0;
for (int atPos : mySet){
if (mySet.atPos == element){ //says atPos cannot be resolved to a field
numElements++;
}
}
return numElements;
}
使用迭代器遍歷元素會更好嗎?如何修復我的問題
mySet.atPos
line?
這是我初始化我HashSet
private HashSet <Integer> mySet = new HashSet<Integer>();
嗯,你的'atPos'從組已收集到的整數。假設你的集合包含'3,2,111',那麼你有三個循環,其中'atPos'是'3','2',最後是'111'。所以只要做'if(atPos == element)' – KarelG
你的問題是對你如何使用變量的一個簡單的誤解。 'int atPos'和'mySet.atPos'不指向相同的東西。前者指的是一個局部變量,後者正在尋找一個名爲同一事物*的實例的公共成員。 – Michael
但...你是否意識到,你的'freq(...)'函數總是會得到0或1?這是如何工作... – KarelG