为什么java中的for each循环不访问最后一个元素?

mwg9r5ms  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(522)

**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

4个月前关门了。
改进这个问题
我试图迭代一个整数哈希集,以找到前两个最大的元素。我的第二大元素位于hashset的末尾,我刚刚发现foreach循环正在跳过最后一个元素。为什么会这样?

for(int n:set)
{
    if(n>max1)
        max1=n;
    else if(n==max1)
        max2=n;
    else if(n>max2)
        max2=n;
}
piv4azn7

piv4azn71#

问题不在于循环,而是您没有正确地更新这两个循环 max1 以及 max2 在每次迭代中:

for(int n : set) {
    if (n > max1) {
        max2 = max1;
        max1 = n;
    } else if (n > max2) {
        max2 = n;
    }
}

请注意,因为它是一个集合,并且值是唯一的,所以在 n 等于 max1 或者 max2 .

相关问题