java - 我在 hashmap 上的 for 循环出错

标签 java loops hashmap

这是我第一次处理 HashMap,我试图做一个简单的循环来遍历每个键,但代码甚至没有进入 for 循环...有人能帮我吗?

for(int i=0; i< ackPkts.size()-1; i++){
    System.out.println("yasmin");
    if (ackPkts.get(i).getAckNo() == ackPkts.get(i-1).getAckNo()){   
        System.out.println("there's a retransmissionS here");
    }else{
        v = value.indexOf(ackPkts.get(i).getAckNo() -1);
    }
}

它甚至不打印 yasmin !

最佳答案

您不能像 ArrayList 那样迭代映射,即使您的键是 Integer 并且是连续的也是非常不鼓励的。

for(int i=0; i< ackPkts.size()-1; i++){   // WRONG!

要迭代 map 的每个条目,请使用 entrySet() 方法:

for (Map.Entry<Integer, String> entry : map.entrySet())
{
    System.out.println(entry.getKey() + "/" + entry.getValue());
}

另外如其他答案所述,由于 -1 您使用了 size,因此存在很多错误,但这将避免迭代 entrySet > map ;)

关于java - 我在 hashmap 上的 for 循环出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30347458/

相关文章:

java - Sprite 调整大小 libGDX

java - 为什么要使用没有抽象方法的抽象类?

python - 用于与 Python/Pandas 中的列中的先前值进行成对比较的循环

python - 为什么我的列表按数字升序返回?

java - 无法从 Hashtable 获取值

java - 关于泛型和集合的核心java

java - 我应该搜索 HashMap 中所有具有 values = null 的键并删除它们。我怎样才能做到这一点?

java - 类路径问题 - getJNIEnv 失败

java - Java 中的双重算术和相等性

javascript - 在继续循环之前让 SetTimeout 完成