[Section 1] Java 컬렉션

현이·2023년 3월 8일
0

백엔드 부트캠프 TIL

목록 보기
12/37
post-thumbnail

사진은 오페라 가르니에 천장 - 내가 본 어느 건축물보다도 제일 화려했다

평소에 개념으로만 배우고 실제로 많이 써보지는 않아 어렴풋이 알고만 있고 설명할 수는 없는 enum, generic 이었고, 예외 처리는 필요할 때는 많지만 그때그때 찾아보고 결국 사용하지 못할 때가 많았다. 이번 기회에 직접 코딩해보며 연습해서 앞으로 필요할때마다 쓸 수 있을 것 같다.


열거형(Enum)

  • 관련있는 상수를 편리하게 선언할 수 있는 문법 요소
  • class 안에 public static final 로 상수 선언 안쓰고 왜 enum을 사용할까?
    => public static final로 하면 switch문 조건은 char, byte, short, int, Character, Byte, Short, Integer, String, enum의 타입만 가능해서 못씀
enum Colours {RED, YELLOW, BLUE, WHITE, BLACK} //보통 다 대문자

public class Main {
    public static void main(String[] args) {
        Colours favColour = Colours.BLUE; //열거형 사용 예시
    }
}
  • 열거형 메소드
    -name() : 상수 이름 리턴
    -ordinal() : 열거 객체 인덱스 리턴
    -compareTo() : 인덱스 차이 리턴
    -valueOf(String) : 해당 문자열의 객체 리턴
    -values() : 모든 열거 객체 배열로 리턴



제네릭(Generic)

  • 타입 지정 안해두고, 나중에 치환할 수 있도록 일반화해두는 것
  • 타입 대신 <T> 표기 (다른 글자여도 됨!)

제네릭 클래스

  • 안에 클래스 변수(static 필드)에는 타입 매개변수 사용 안됨!
  • 다형성 적용 가능
  • 인터페이스에도 적용 가능(특정 인터페이스 구현 클래스만 타입으로 지정)
    => 모두 extends 키워드 사용
  • 인터페이스 여러 개 사용하면 & 사용

제네릭 메서드

  • 제네릭 메서드의 타입 매개변수 != 제네릭 클래스의 타입 매개변수

    -클래스에서 사용한 타입 매개변수는 인스턴스화될 때 타입 지정됨
    -메서드에서 사용한건 메서드 호출할 때 타입 지정됨

  • 제네릭 메서드는 static 메서드에서도 타입 매개변수 사용 가능!

  • 제네릭 메서드 정의할 때는 타입 지정 안되어있어서 String 클래스의 메서드 사용 불가능!!ㅠㅠ
    => 대신 Object 최상위 클래스 메서드들은 사용 가능! (equals(), toString(), ...)


와일드 카드

<? extends T>   //T와 T를 상속받는 하위 클래스 타입만 (상한 제한)
<? super T>     //T와 T의 상위 클래스만 (하한 제한)



예외 처리(Exception Handling)

  • 오류 >>>> 예외
  • Runtime Exceptions + Other Exceptions

try-catch문

  • 코드 작성 방법
try {
    // 예외가 발생할 수 있는 코드
} 
catch (ExceptionType1 e1) {
    // ExceptionType1 예외 발생 시 실행할 코드
} 
catch (ExceptionType2 e2) {
    // ExceptionType2 예외 발생 시 실행할 코드
} 
finally {
    // 예외 발생 상관없이 항상 실행
}

*사용 예시*

=> 실행 결과


예외 전가

  • throws 키워드 : 예외 호출한 곳으로 다시 떠넘기기
  • throw 키워드 : (없는) 예외 만들기

throws

static void throwException() throws ClassNotFoundException, NullPointerException {
        //함수 내용
    }

throw

try {
	Exception intendedException = new Exception("의도된 예외 만들기");
	throw intendedException;
} catch (Exception e) {
	System.out.println("고의로 예외 발생시키기 성공!");
}



컬렉션 프레임워크(Collection Framework)

List : 순서 ⭕ , 중복 ⭕
Set : 순서 ❌ , 중복 ❌
Map : (key, value) 쌍 , 순서 ❌ ,
-> key - 중복 ❌ , value - 중복 ⭕

ㅇㅇ

0개의 댓글