[section 1] Java 컬렉션(1)

수경·2022년 11월 10일
0

코드스테이츠

목록 보기
17/57

enum

연관된 상수들의 집합 static final

특징

  1. 편리한 선언, 관리
  2. 상수 중복 방지
  3. 타입 안정성
  4. 가독성 향상
  5. switch 문 사용 가능
enum Season {
	// 대문자로 선언하는 것이 관례
	SPRING,
    SUMMER,
    FALL,
    WINTER
}

wrapper class 래퍼 클래스

기본 타입을 객체로 만들어야 할 때 참조 타입으로 만들기 위해 사용하는 클래스

종류

Byte Short Integer Long Double Float Char Boolean

박싱 / 언박싱

박싱 기본 타입 값 ➡️ 포장 객체
언박싱 포장 객체 ➡️ 기본 타입

Integer num1 = new Integer(10);	// 박싱
int num2 = num1.intValue();		// 언박싱

Integer num3 = 20;	// 자동 박싱
int num4 = num3;	// 자동 언박싱

제네릭

같은 기능을 하는 메소드를 여러 타입 버전으로 작성하는 경우
➡️ 불필요한 코드가 길어짐
➡️ 제네릭으로 해결하자❗️

자료형을 구체적으로 명시하지 않고 일반화하여 작성

// T 자리에 자료형 치환
Class Basket<T> {
	private T item;
    
    public Basket(T item) {
    	this.item = item;
    }
}

제네릭 클래스

제네릭이 사용된 클래스

  • <T\> ➡️ T는 타입 매개 변수, Type의 T

  • 타입 매개 변수 여러개 지정 가능

  • 클래스 변수에 타입 매개 변수 ❌
    ➡️ 클래스 변수: 공유변수
    ➡️ 타입 매개 변수로 인해 클래스 변수의 타입이 인스턴스마다 바뀌게 됨
    ➡️ 같은 변수 공유 ❌

  • ❗️타입 매개 변수는 참조 타입이어야 함
    ➡️ 기본 타입은 래퍼 클래스(wrapper class)로 변환 필요
    ➡️ 생성자 호출 시 래퍼 클래스 생략 가능 (참조 변수로부터 유추)
    Basket<Integer> basket = new Basket<>(10)

  • 다형성 가능 ➡️ 부모/자식 클래스로 객체 생성 및 접근 가능

  • 모든 타입 가능, 특정 클래스/인터페이스만 받아오도록 지정 가능
    ➡️ Basket<T extends Flower> 클래스
    ➡️ Basket<T extends Plant> 인터페이스
    ➡️ Basket<T extends Flower&Plant> 동시 가능, 클래스 먼저 작성


제네릭 메소드

제네릭이 사용된 메소드

  • static 가능

  • 메소드가 호출 되는 시점에 제네릭 타입 결정 ➡️ 정의하는 시점에서 타입 알 수 없음
    ➡️ length() 불가

  • Object의 모든 메소드 가능 (최상위 클래스니까!)
    equals() toString()


와일드카드

  • <? extends T>
    T와 T를 상속받는 하위 클래스 타입만 가능하도록 제어

  • <? super T>
    T와 T의 상위 클래스 타입만 가능하도록 제어

  • <?> = <? extends T>
    모든 클래스 타입 가능


예외처리

  • 컴파일 에러: 컴파일 시 발생하는 에러
    ✔️ 문법(syntax)와 관련
    ✔️ IDE에서 오류 찾아줌

  • 런타임 에러: 런타임 시 발생하는 에러

  • 에러와 예외
    ✔️ 에러: 복구하기 어려운 심각한 오류, 메모리 부족 / 스택 오버플로우 등
    ✔️ 예외: 잘못된 사용이나 코딩으로 인한 미약한 수준의 오류


try-catch문

try {
	// 코드
} catch(ExceptionType1 e1) {
	// ExceptionType1 에러 발생 시 실행
} catch(ExceptionType2 e2) {
	// ExceptionType2 에러 발생 시 실행
} finally {
	// 무조건 실행
}

컬렉션 프레임워크

컬렉션 프레임워크 = 컬렉션을 편리하게 다루기 위해 메소들을 미리 정의해 둔 것

컬렉션: 여러 데이터들의 집합

Iterator 반복자

컬렉션에 저장된 요소들을 순차적으로 읽어옴

  • hasNext(): 다음 요소가 있는지 여부 반환
  • next(): 다음 요소 불러옴
  • remove(): 요소 삭제

List

순서가 있는 저장 공간

  • 중복 허용 ⭕️
  • 순서 ⭕️
  • 종류
    • LinkedList : 연결리스트 ➡️ 삽입/삭제가 많을때 적합
    • ArrayList : 배열과 같은 구조 ➡️ 단순 검색에 적합
    • Stack
    • Vector

Set

집합적인 저장 공간

  • 중복 허용 ❌
  • 순서 ❌
  • 종류
    • HashSet : 정렬 ❌
    • TreeSet : 이진트리, 정렬 ⭕️

Map

[key:value] 쌍(Entry)으로 구성

  • key의 중복 ❌ but, value의 중복 허용 ⭕️
  • 종류
    • HashMap ➡️ 저장한 순서와 무관하게 저장
    • HashTable
    • SortedMap
    • LinkedHashMap ➡️ 저장한 순서 유지
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글