簡體   English   中英

我在for hash循環中的錯誤

[英]error in my for loop over a hashmap

這是我第一次處理HashMap並且我試圖做一個簡單的循環來遍歷每個鍵,但代碼甚至沒有進入for-loop ...任何人都可以幫助我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

您不能像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 ,但這將避免迭代你的MapentrySet ;)

您提到的代碼片段不夠清楚,無法理解循環內部必須完成的操作。

希望這會對你有所幫助。

    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的方法。

你的for循環條件是錯誤的。

它應該是 :

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

而且如果它沒有打印任何東西,那么這意味着ackPkts是空的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM