Programing

hastable 키 열거를 반복하면 NoSuchElementException 오류가 발생합니다.

lottogame 2021. 1. 5. 07:42
반응형

hastable 키 열거를 반복하면 NoSuchElementException 오류가 발생합니다.


열거를 사용하여 해시 테이블의 키 목록을 반복하려고하지만 목록의 마지막 키에서 NoSuchElementException이 계속 발생합니까?

Hashtable<String, String> vars = new Hashtable<String, String>();

vars.put("POSTCODE","TU1 3ZU");
vars.put("EMAIL","job.blogs@lumesse.com");
vars.put("DOB","02 Mar 1983");

Enumeration<String> e = vars.keys();

while(e.hasMoreElements()){

System.out.println(e.nextElement());
String param = (String) e.nextElement();
}

콘솔 출력 :

이메일
우편 번호
스레드 "main"java.util.NoSuchElementException의 예외 : Hashtable 열거 자
    java.util.Hashtable $ Enumerator.nextElement (Unknown Source)에서
    testscripts.webdrivertest.main (webdrivertest.java:47)에서


nextElement()루프에서 두 번 호출 합니다. 이 호출은 열거 포인터를 앞으로 이동합니다. 다음과 같이 코드를 수정해야합니다.

while (e.hasMoreElements()) {
    String param = e.nextElement();
    System.out.println(param);
}

for (String key : Collections.list(e))
    System.out.println(key);

호출 e.nextElement()때마다 반복기에서 다음 객체를 가져옵니다. e.hasMoreElement()각 통화 사이 에 확인해야합니다 .


예:

while(e.hasMoreElements()){
    String param = e.nextElement();
    System.out.println(param);
}

nextElement를 두 번 호출합니다. 다음과 같이 리팩터링하십시오.

while(e.hasMoreElements()){


String param = (String) e.nextElement();
System.out.println(param);
}

당신이 전화하는거야 e.nextElement()당신은 단지 당신이 예외없이 한 번 호출 할 수 있음을 보장 할 때 루프 내부에 두 번. 다음과 같이 루프를 다시 작성하십시오.

while(e.hasMoreElements()){
  String param = e.nextElement();
  System.out.println(param);
}

루프에서 nextElement를 두 번 호출합니다. 한 번만 호출해야합니다. 그렇지 않으면 두 번 앞으로 이동합니다.

while(e.hasMoreElements()){
    String s = e.nextElement();
    System.out.println(s);
}

당신이 e.nextElement()때마다 당신은 하나를 건너 뜁니다. 따라서 루프의 각 반복에서 두 요소를 건너 뜁니다.

참조 URL : https://stackoverflow.com/questions/7160568/iterating-through-enumeration-of-hastable-keys-throws-nosuchelementexception-err

반응형