程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> hashmap-Java 程序輸出不一樣,請問為啥

hashmap-Java 程序輸出不一樣,請問為啥

編輯:編程解疑
Java 程序輸出不一樣,請問為啥
 package learn;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class MapTest2 {

    public static void main (String[] args){
        HashMap map = new HashMap();
        int t;

        for(int i=0; i<args.length;i++){
            if(map.get(args[i])!=null){
                t = (int)map.get(args[i]);
                map.put(args[i],new Integer(t+1));
            }
            else{
                map.put(args[i],new Integer(1));
            }
        }
        Set set = map.keySet();




        for(Iterator iter = set.iterator();iter.hasNext();){
            String  c = (String)iter.next();
            Integer a = (Integer)map.get(c);

            System.out.println("name:"+c+"number:"+a);
        }
    }
}
Integer a = (Integer)map.get(c);
這一句中如果是c的話 輸出正常,是:

name:worlsnumber:3
name:worldnumber:1
如果是
(String)iter.next()
的話輸出不正常,是:
name:worlsnumber:1

IDE eclipse mars
運行參數: worls worls world worls

最佳回答:


你的代碼是沒有問題的,肯定只有c=iter.next()時直接取當前這個key對應的值才正確啊。
如果是下面這樣:

 String  c = (String)iter.next();
 Integer a = (Integer)map.get((String)iter.next());

上面代碼執行了兩次next,相當於你直接跳躍遍歷了,第一個元素c你沒有處理,直接跳到下一個元素了。當然就只輸出了一條記錄。
實際上是由多少條記錄,就應該執行多少次next才對。所以,只能每判斷一次hasNext,就執行一次獲取操作next()。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved