728x90
반응형
Scanner 클래스에 있는 hasNext()와는 다른 아이임을 선고지 함.
1. 배경 설명
Collection framework
데이터를 저장하는 클래스들을 표준화 한 설계
그 하위의 인터페이스 (Set / List / Map) 은 데이터의 집합체들이다.
Iterator
- 위의 데이터 집합체에 저장되어 있는 요소들을 읽어오는 방법을 표준화한 인터페이스를 말한다.
- 원래는 각 인터페이스 별로 데이터를 읽을 방법을 알아야 하는데
이 인터페이스를 사용하면 어떤 Collection 이라도 동일 방식으로 안에 있는 데이터에 접근이 가능.
즉, 쉽게쉽게 데이터 얻어 오기 위한 인터페이스라는 것.
- Vector<E>, ArrayList<E>,LinkedList<E> 가 상속받는 인터페이스
- 리스트 구조의 컬렉션에서 요소의 순차검색을 위한 메소드 포함
- 순방향으로 한번에 하나의 데이터 밖에 못가져온다.
hasNext() / next() / remove()
이 인터페이스가 지니고 있는 메소드가 위의 함수들이다.
- hasNext()
Iterator는 내부적으로 데이터저장소에서 자신이 가리키고 있는 지점을 알고 있는데 이동할 항목이 있는지를 체크하는 메소드. 다음에 읽어 올 요소가 있으면 true, 없으면 false 를 반환. - next() : 데이터저장소에서 현재위치를 순차적으로 하나 증가해서 이동. 다음 요소의 값을 가져옴.
- remove() : next()로 읽어온 요소를 삭제.
Iterator 사용 장점
종류에 상관없이 다 쓸 수 있기에 Collection이 정해지지 않았을 때 사용할 수 있다.
단점
느리다.
사용 예시
Collection 객체들이 아래와 같이 있다.
Vector<> vec = new Vector<>();
LinkedList<Member> link = new LinkedList<Member>();
Set<String> set = new Set<>(String);
위의 객체에 맞게 Iterator 객체는 아래처럼 얻을 수 있다.
Iterator iter0 = arr.iterator(); //vector의 요소를 순차 검색할 객체
Iterator<> iter1 = vec.iterator<>();
Iterator<Member> iter2 = link.iterator<Member>();
Iterator<String> iter3 = set.iterator<String>();
이후 while 문 - hasNext() - next() 로 하나씩 값을 얻는다.
while(iter0.hasNext()){
String set = (String)iter0.next();
}
728x90
반응형
'자바(Java) > 자바(Java) 잡다' 카테고리의 다른 글
자바(Java) StringBuilder와 String (0) | 2023.02.09 |
---|---|
자바(Java) Arrays.sort()와 Collections.sort() (0) | 2023.02.09 |
자바(Java) 썸네일 라이브러리 Thumbnailator (0) | 2022.12.18 |
자바(Java) Multipart / MultipartFile / File (파일 업로드 관련) (0) | 2022.12.18 |
자바(Java) forEach() 사용법 (0) | 2022.12.09 |
댓글