[TIL] Java - 컬렉션

KwonSC·2021년 11월 10일
0

TIL - Java

목록 보기
4/5
post-thumbnail

제네릭스(Generics)

  • 제네릭스(Generics)란?

    • 클래스 내부에 사용할 데이터 타입을 외부에서 지정하는 기법

    • 클래스를 정의할 때 데이터의 타입을 확정하지 않고 객체를 생성할 때 타입 지정

    • 구현의 편의성과 자료형의 안정성을 보장하기 위해 사용

  • 제네릭스 클래스 설계

    • 타입 매개변수는 하나의 대문자를 사용한다. 주로 'T'를 사용

    • 타입 매개변수가 클래스 또는 메소드의 선언 등에 사용될 수도 있다.

    • 제네릭은 참조 데이터 타입에 대해서만 사용이 가능하다. 원시 타입은 사용 불가

  • 제네릭스 특징

    • 객체 생성시에 <>안에 매개변수 타입을 선언, 컬파일러에게 사용 타입을 전달

    • 캐스팅이 필요 없고, 보다 안전한 코드를 작성 가능

    • 메소드가 받아들일 수 있는 타입을 제한함으로써 에러검사, 타입검사 생략

    • java.util 패키지의 컬렉션 클래스들은 기본적으로 제네릭스를 지원

  • 상속관계에 있는 클래스에서 제네릭스 사용하기

  • 제네릭스의 제한

    • 제네릭스의 와일드카드
      • 제네릭 자료형을 임의의 자료형으로 지정할 수 있도록 해줌
      • '?' 문자로 표시
    • 임의의 자료형 와일드카드

  • 클래스 상속 계층 구조의 와일드카드

    • superextends 예약어를 사용하여 상속 구조상의 경계를 지정
    • <? extends T> : T 또는 T의 자손 타입을 의미
    • extends 다음에 나오는 클래스와 그 자식 클래스들이 제네릭 자료형으로 가능함


컬렉션

  • 컬렉션은 객체를 담을 수 있는 신축성 있는 주머니이다.

    배열컬렉션
    장점모든 데이터 저장 가능, 사용이 편리함자동으로 크기를 조정, 명시적인 이름의 메소드 사용
    단점처음에 지정한 크기에서 공간의 크기를 변경할 수 없음사용 방법이 다소 복잡함
  • 원시타입을 객체로 만들기 위해서는 Wrapper Class를 사용한다.

    기본 데이터 타입Wrapper Class 이름
    intInteger
    longLong
    doubleDouble
    booleanBoolean
    byteByte
    charCharacter
    floatFloat
    shortShort
    voidVoid

컬렉션 프레임워크

  • 데이터 군을 저장하는 클래스들을 표준화한 설계

  • 다수의 데이터를 쉽게 처리할 수 있는 방법을 제공하는 클래스들로 구성

  • 자료구조와 알고리즘의 기능을 제공한다.

  • 컬렉션 프레임워크의 기본 골격

    • 컬렉션을 다루는데 필요한 기능을 가진 3개의 인터페이스를 정의(Set, List, Map)
    • Collection<E> : 인스턴스 단위의 데이터 저장 기능 제공
    • Map<K, V> : Key-Value 구조의 인스턴스 저장 기능 제공

  • Collection 인터페이스를 구현하는 Generic 클래스들

  • Map<K, V> 인터페이스를 구현하는 컬렉션 클래스들


ArrayList

  • ArrayList란?

    • 데이터를 순차적으로 처리하는 구조
    • ArrayList에 데이터를 추가하는 순서대로 인덱스 번호가 매겨짐 (0부터)
    • 데이터의 중복을 허용
    • 배열과 매우 유사한 구조를 갖고 있음
    주요 메소드명설명
    add(Object obj)ArrayList에 객체를 하나 추가
    get(int index)index 번째에 있는 객체를 반환
    remove(int index)index 번째에 있는 객체를 삭제
    set(int index, Object obj)index 번째에 있는 객체를 obj로 변경
    size()ArrayList에 저장된 객체의 개수를 반환
    clear()ArrayList의 모든 객체를 삭제
  • ArrayList 생성

ArrayList<데이터타입> arr = new ArrayList<데이터타입>(); // 객체 생성
  • for-each문으로 데이터 접근
for (데이터타입 a : arr) {
    System.out.println(a);
}

HashMap

  • Hashmap<K, V>이란?

    • 저장되는 순서가 유지되지 않는 구조
    • key와 value의 쌍으로 저장(키와 값 모두 객체)
    • key의 중복 허용X
    • key를 이용하여 각 value를 구별할수 있음
    주요 메소드명설명
    put(Object key, Object value)HashMap에 value 객체를 하나 추가
    get(Object key)키가 key 객체로 저장되어 있는 value 반환
    remove(Object key)키가 key 객체로 저장되어 있는 객체 삭제
    keySet()key로만 구성되어 있는 컬렉션을 반환
    size()HashMap에 저장된 객체의 개수를 반환
    clear()HashMap의 모든 객체를 삭제
  • HashMap<K, V> 생성

HashMap<키_데이터타입, 값_데이터타입> map = new HashMap<키_데이터타입, 값_데이터타입>();
  • for-each문을 이용한 데이터 접근
for (키_데이터타입 key : map.keySet()) {
    System.out.println(map.get(key));
}

0개의 댓글