我想迭代一个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