관리 메뉴

쿰뱅이

자바 Enumeration 인터페이스 정말 궁금합니다... 본문

자바/JAVA 입문

자바 Enumeration 인터페이스 정말 궁금합니다...

주년 2011. 10. 11. 14:15
반응형
자바 Enumeration 인터페이스 정말 궁금합니다...
질문::
벡터 클래스에 저장된 객체를 꺼낼때,,,,
Hashtable에서 뭐 키값들을 가져 올때...
Enumeration인터페이스가 쓰이던데..
hasMoreElements() // nextElement()
메소드 이해가 잘 되질 않습니다..
책에는 벡터안에 꺼낼요소가 있으면 true/false.....백터에서 객체를 가지고 온다고
둘다 설명되어있는데...

정확하게 이해가 가질 않네요..
제가 아직 이부분에 이해가 부족하기 때문에, 정확히 딱 뭐가 궁금합니다 라기보다는
전체적인걸 이해 못하다보니...좀 질문이 애매모호 할수도 있는데...죄송하구요.^^;
이 부분 설명좀 부탁 드리구요..
또,
while(enu.hasMoreElements())
//값 출력
해보면 마지막에 넣은것부터 나오게 됩니다.... 그 이유랑...처음에 넣은것부터
출력하려면 어떻게 해야하는지 좀 알려주세요....
ps) 시간의 여유가 조금 있으시면
Enumeration enu = v.elements(); //vector의 멤버 elements() 이애도좀 설명 부탁드려요..ㅠㅠ~~!!!

답변::
hasMoreElements() // nextElement()
Enumeration 은 순서를 가지고 있는 배열의 한 종류라고 생각하시면 됩니다..
Enumeration 의 가장 중요한 개념이 커서라 는 것입니다..
커서란 현재의 위치를 가리키고 있는 것인데 최초 0부터 시작합니다..
hanMoreElement()는 커서 바로 앞에 데이타가 들어있는지를 체크하는 것입니다..
현재 커서가 0이라면 첫번째칸을 가리키기 때문에 데이타가 하나라도 들어있다면 true를 리턴해 줍니다..
nextElement()는 현재 커서가 가리키고 있는 데이타-객체(Object)-를 리턴해주고 커서의 위치를 다음 칸으로 옮깁니다..
맨처음 nextElement()를 실행하면 값은 첫번째 객체가 리턴되고 실행 후의 커서는 첫번째 데이타를 지나 두번째 데이타가 있는 곳을 가리키게 되죠...
그래서 nextElement() 메소드가 실행한 후 hasNextElement()의 값은 두번째 데이타가 있냐없냐를 따지게 되는 겁니다..

두번째 질문은 좀 모호합니다..
Enumeration 은 데이타를 추가하는 방법이 없습니다..
마지막에 넣었다는 말이 어떤 의미인지 명확하지 않네요...
만약 벡터에 마지막에 넣은 것부터 나온다는 말이라면 아마도 뭔가 코딩실수가 있지 않을까 합니다..
Enumeration 은 벡터에 넣은 순서대로 생성이 되면 위와 같이 코딩했다면 마찬가지로 들어간 순서대로 출력이 됩니다..
Enumeration enu = v.elements();
위의 문장은 말 그대로 벡터의 모든 요소를 Enumeration 객체로 만들어 반환한다는 의미입니다..
Vector 클래스가 가지고 있는 elements()라는 메소드의 리턴값이 Enumeration 객체인 것입니다..
위쪽에 설명해 놓은 커서의 개념을 잘 이해하신다면 Enumeration 은 어렵지 않으리라 생각됩니다..
Enumeration 은 거꾸로 뒤쪽에서 앞쪽으로 커서를 움직일 수 있는 방법이 없습니다..
비슷한 Interface로 Iterator 라는 녀석이 있습니다..
이것도 Enumeration 와 마찬가지로 커서의 개념을 가지고 있으며 hasMoreElement()메소드 대신에 hasNext(), nextElement() 메소드 대신에 next()라는 메소드가 있습니다..
Iterator 가 Enumeration 과 틀린 점은 remove()라는 메소드로 마지막에 위치한 요소를 지울 수 있다는 것입니다..
제 설명이 도움이 되었기를...

출처 : 네이버지식인
반응형