我在for hash循环中的错误

时间:2015-05-20 10:48:41

标签: java loops hashmap

这是我第一次处理HashMap的问题,而我正试图在每个键上循环一个简单的循环,但代码甚至没有进入for-loop ... can有人帮我PLZ吗?

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

3 个答案:

答案 0 :(得分:2)

您无法像ArrayList那样迭代地图,即使您的密钥为Integer且连续性非常不鼓励。

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

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

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

同样如其他人的回答所指出的那样,由于-1使用了大小,因此存在很多错误,但这将避免迭代entrySet的{​​{1}};)

答案 1 :(得分:1)

您提到的代码段不够清楚,无法理解循环内部必须完成的操作。

希望这会对你有所帮助。

    Set set = ackPkts.entrySet();
    Iterator i = set.iterator();     
         while(i.hasNext()) {
         Map.Entry me = (Map.Entry)i.next();
         System.out.print(me.getKey() + ": ");
         System.out.println(me.getValue());
         }

这是循环HashMap的方法。

答案 2 :(得分:0)

您的for循环条件错误。

应该是:

for(int i=0; i< ackPkts.size(); i++) {

如果它没有打印任何内容,那么这意味着ackPkts为空。