Iteratorディケンサによるjava.util.NoSuchElement Exceptionの原因と解決方法

2411 ワード

私:今日はローズマリーを使ってjava.util.NoSuchElement Exceptionエラーが発生しました.解決策を探しました.やはり、シーズマリーnext()については深く理解していません.以下:
本文はオリジナルを尊重します
http://blog.csdn.net/a503921892/article/details/23061341
簡単に言います
原因:サイクル中に二回のnext()の方法を使うことができません.
解決方法:next()を取り出したデータをまず新しい対象に転送し、使う時に方法を考えて取り出します.
私たちはJDK文書でIteratorの3つの方法を見ることができます.Java.util.NoSuchElement Exceptionはnext()によるものです.下の赤い字を見なさい
方法の概要booleanhasNext()は、要素が反復可能である場合には、戻ります. trueEnext()は、反復の次の要素を返します.voidremove()は、サンデーが指すcollectionから、サンデーが返した最後の要素を除去する(オプション動作).
next
E next()
反復の次の要素を返します.
戻り値:
次の要素を繰り返します.
投げ出す:NoSuchElementException - 反復できる要素はありません.     ←ここです
異常コードは以下の通りです.
[java]  view plin
 copy
//ハイshMapをローズマリーで遍歴し、条件に合致した場合は値を返します.常識:ローズマリーの初期位置はリストの最初のデータの上にあります.最初のデータを指すのではありません.ポイントはnext()の方法は循環の中で2回呼び出すことができなくて、さもなくばjava.util.NoSuchElement Exceptionを申し込むことができます.   bollan isOk = false;   Iterator>  iter = map.entrySet().iterator()   while(iter.has Next){ //hash Next()              「white-space:pre」>  if(name.equals(iter.next().getKey()){/next()一回                              System.out.println(「名前:」 + iter.next().getKey()//二回           System.out.println(「電話:」 + iter.next().getValue()//三回           isOk = true;           break;       }   )       if(isOk) {           //nothing          }       else{           System.out.println(「この人がいないと調べる!」)       }   改善後のコードは以下の通りです.
[java]  view plin
 copy
bollan isOk = false;   Iterator>  iter = map.entrySet().iterator()              while(iter.has Next){   「white-space:pre」>  Map.Entry index = iter.next();"font-family: Arial Helvetica、 sans-serif;'//next() 今回だけは、新しいオブジェクトを作成し、next()を取り出した値を伝えます.          String outname = index.getKey()///再取出値       String outnumber = index.getValue()、「font-family: Arial Helvetica、 sans-serif;"////"は値を取り出します.                         if(name.equals){//ここもnext()の方法はいらないです.           System.out.println(「名前:」 + outname;           System.out.println(「電話:」 + outnumber)           isOk = true;           break;       }   )   「white-space:pre」>  if(isOk) {               //nothing       }   「white-space:pre」>  else{       「white-space:pre」>  System.out.println(「この人がいないと調べる!」)       }