public class TestHashtable {
public static void main(String[] args)
{
String key,value;
Hashtable<String,String> ht = new Hashtable<String,String>();
ht.put("xixi", "haha");
ht.put("hello", "world");
ht.put("ni", "hao");
Set<Map.Entry<String, String>> s = ht.entrySet();
Iterator<Map.Entry<String,String>> it = s.iterator();
while( it.hasNext() )
{
key = it.next().getKey();
value = it.next().getValue();
System.out.println("key:"+key+"value:"+value);
}
}
}结果遍历出来的结果是:
key:xixivalue:hao
Exception in thread "main" java.util.NoSuchElementException: Hashtable Enumerator
at java.util.Hashtable$Enumerator.nextElement(Hashtable.java:1021)
at java.util.Hashtable$Enumerator.next(Hashtable.java:1032)
at TestHashtable.TestHashtable.main(TestHashtable.java:21)
真是找不出什么原因了,而且用keySet方式遍历也是一样的。求各位大神指点迷津!hashtable遍历javaiterator

解决方案 »

  1.   

    应该是
    value = ht.get(key);才对啊
      

  2.   

    那是用keySet的方式,这是用entrySet,都一样,输出都是错误的。
      

  3.   

    那是用keySet的方式,这是用entrySet,都一样,输出都是错误的。怎么可能会出错,看看你应用的是不是util的类吧。
      

  4.   

    那是用keySet的方式,这是用entrySet,都一样,输出都是错误的。怎么可能会出错,看看你应用的是不是util的类吧。
    是的哦,全部都是util的类
    import java.util.Hashtable;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Set;
      

  5.   

    那是用keySet的方式,这是用entrySet,都一样,输出都是错误的。怎么可能会出错,看看你应用的是不是util的类吧。
    您不信可以到eclipse中试一下
      

  6.   

    key = it.next().getKey();
    value = it.next().getValue();你这相当于迭代两次可行,同一个key
      

  7.   

    或者改为
    Entry<String, String> entry = it.next();
    key = entry.getKey();
    value = entry.getValue();
    好好看看it.next()的意思。
      

  8.   

    真是这样的,疏忽大意了,居然犯这种错误,谢谢您了,Java新手,莫怪莫怪,嘿嘿。