JAVA_Iterator (반복자) & Collections

JW__1.7·2022년 8월 10일
0

JAVA 공부일지

목록 보기
22/30

Iterator (반복자)

  • 어떤 컬렉션이라도 동일한 방식으로 접근이 가능하여, 그 안에 있는 항목들에 접근할 수 있는 방법을 제공한다. (다형성)
  • 특정 컬렉션 (interface Collection)에 등록해서 사용
  • 순회할 때 사용 (for문 대용)
  • 주요 메소드
    • hasNext() : 남아 있는 요소가 있으면 true 반환 = 손이 들어가는
    • next() : 요소를 하나 반환 = 주머니에서 랜덤으로 꺼내는
  • 주로 Set에서 사용

List : 순서 O, 중복 O
Set : 순서 X, 중복 X
Map : key : Value, 순서 X, key는 중복 X / Value는 중복 O

Iterator 주요 메소드

  • hasNext( ) : 남아 있는 요소가 있는지 확인하는 메소드 (유/무에 따라 true / false를 반환)
  • next( ) : 다음 요소를 꺼냄

Set을 이용한 Iterator

// 선언
Set<String> set = new HashSet<String>();

// 요소 추가
set.add("제육");
set.add("닭갈비");
set.add("돈까스");
set.add("김치찌개");
	
// set를 조회할 반복자 iterator
Iterator<String> itr = set.iterator();	// itr은 주머니에 들어가는 손
while(itr.hasNext()) {
	String element = itr.next();
	System.out.println(element);
}
    
// 닭갈비
// 제육
// 김치찌개
// 돈까스

HashMap과 Iterator

  • keySet() 메소드로 key만 Set에 저장
  • key를 저장한 Set에 Iterator를 등록해서 사용
// 선언
Map<String, Object> map = new HashMap<String, Object>();

// 요소 추가
map.put("page", 1);
map.put("column", "제목");
map.put("query", "날씨");
    
// key만 Set에 저장	
Set<String> keys = map.keySet();
    
// Iterator를 이용한 순회	
Iterator<String> itr = keys.iterator();
	
while(itr.hasNext()) {
	String key = itr.next();
	Object value = map.get(key);
	System.out.println(key + " : " + value);
}
    
// query : 날씨
// column : 제목
// page : 1

Collections

  • 패키지 : java.util
  • 컬렉션을 대상으로 특정 연산을 수행할 수 있는 클래스
  • 모든 메소드가 클래스 메소드(static)로 되어 있다.

Collections 주요 메소드

public static void printMovies(List<String> list) {
		
	for(int i = 0, size = list.size(); i < size; i++) {
		System.out.print(list.get(i));
		if(i < size - 1) {		// size - 1 : 마지막 요소의 인덱스
			System.out.print(" → ");
		}
	}
	System.out.println();
}

	
public static void main(String[] args) {
		
	List<String> movies = new ArrayList<String>();
	movies.add("아바타");
	movies.add("쇼탱크탈출");
	movies.add("명량");
	movies.add("에일리언");
	movies.add("한산");
        
	// Iterator를 이용해 순환
	printMovies(movies);	// 아바타 → 쇼탱크탈출 → 명량 → 에일리언 → 한산
		
	// movies 리스트를 오름차순 정렬
	Collections.sort(movies);
	printMovies(movies);
	
	// movies 리스트를 내림차순 정렬
	Collections.reverse(movies);
	printMovies(movies);
		
	// 특정 요소의 인덱스 반환
	// 이진 검색 (binary search)을 이용하므로 검색 속도가 매우 빠름
	// 단, 크기순으로 정렬이 되어 있어야 한다.
	int idx = Collections.binarySearch(movies, "아바타");
	System.out.println(idx);	// 2

0개의 댓글