221024 - 컬렉션 클래스에서 제네릭을 사용하는 이유

Jongleee·2022년 10월 24일
1

TIL

목록 보기
86/576

컬렉션 클래스에서 제네릭을 사용하는 이유

컬렉션

요소(element)라고 불리는 가변 개수의 객체들의 저장소
객체들의 컨테이너라고도 불림
고정 크기의 배열을 다루는 어려움 해소
다양한 객체를 삽입, 삭제 검색 할 수 있음
컬렉션은 제네릭 기법으로 구현됨

제네릭

특정 타입만 다루지 않고 여러 종류의 타입으로 변신할 수 있도록 클래스나 메소드를 일반화시키는 기법
Ex.

Vector<E>	// 제네릭 벡터
Vector<Integer>	// 정수만 다루는 벡터
Vector<Stirng> // 문자열만 다루는 벡터

ArrayList<E>

가변 크기의 배열
Ex. 선언

ArrayList<Integer> = new ArrayList<>(); 

Iterator<E>

  • 컬렉션의 순차 검색에 이용

  • Iterator<E> 인터페이스 메소드

  • iterator() 메소드

    • 메소드를 호출하면 Iterator 객체 반환
    • Iterator 객체를 이용하여 index 없이 순차 검색 가능
    Iterator<Integer> it = al.iterator();
     while(it.hasNext()) {
        int n = it.next();
        System.out.println(n);
    }

HashMap<E>

키(key)와 값(value)의 쌍으로 구성되는 요소를 다루는 컬렉션
주요 메소드

  • put() : 요소 삽입
  • get() : 요소 검색 (값 접근의 경우 키를 이용)

LinkedList<E>

ArrayList 클래스와 유사하게 작동
element 객체들은 양방향으로 연결되어 관리
element 객체는 맨 앞, 맨 뒤 또는 인덱스를 이용하여 중간에 삽입 가능
스택이나 큐로 사용 가능

Collections 클래스

컬렉션에 대해 연산 수행, 결과로 컬렉션 return
모든 메소드는 static 타입
주요 메소드

  • sort() : 정렬
  • reverse() : element의 순서를 반대로
  • max(), min() : 최댓값, 최솟값
  • binarySearch() : 특정 값 검색

제네릭 객체 생성 - 구체화

타입 매개 변수에 기본 타입은 사용할 수 없음 (Ex. int)

제네릭의 장점

  1. 타입이 결정되지 않고 컴파일 시에 타입이 결정되므로 보다 안전한 프로그래밍 가능
  2. 런타임 타입 충돌 문제 방지
  3. 개발시 타입 캐스팅 절차 불필요
  4. ClassCastException 방지
    -> 부모 클래스가 자식 클래스를 캐스팅

0개의 댓글