본문 바로가기
부트캠프/코드스테이츠 백엔드부트캠프 43기

코드스테이츠 백엔드 부트캠프 43기 (14,15일차-컬렉션 회고)

by 고구마는호박고구마 2023. 1. 5.

열거형

상수들을 관리하기 위함

타입에 대한 안정성을 보장 

- 아직 활용을 해보지 않아 몸소 와닿지 않는다.

 

 


 

제네릭

해시맵이나 어레이리스트를 생성해보면 ArrayList<> ?? = new ArrayList<>(); 이런식으로 선언이 된다.

여기서 <> 이 안에 고정값이 아닌, String 이나 Integer 참조타입을 사용자가 원하는 타입을 넣을 수 있다. 이 같은 기능을 제네릭이라고 한다. 

 

설정으로 ArrayList가 밑에 코드인거 처럼 가정한다면, <> T라고 선언을 하면 어떤 타입으로든 받을수 있다.

class ArrayList<T> {
    private T item;

    public ArrayList(T item) {
        this.item = item;
    }

    public T getItem() {
        return item;
    }

    public void setItem(T item) {
        this.item = item;
    }
}

 

그렇다면 <> 안에는 왜 int 나 char 기본타입은 왜 넣을 수 없을까?

 - 고민해보는 걸로....

 

일단 <> 안에는 참조타입만 선언 가능.

 

 


예외처리

 1. 내부적인 요인 - 개발자의 코드 실수

 2. 외부적인 요인 - 하드웨어 문제, 네트워크, 사용자의 잘못된 값 입력 등  

 

 1.1 발생시점에 따른 에러

   1.1.1 컴파일 에러 : 실행하기 전 코드 실수 ( 개발환경에서 컴파일 하기 전에 경고를 통해 알 수 있음 )

   1.1.2 런타임 에러  : 실행이 되고 잘 못된 값에 접근하거나 NULL 값에 접근하는 등의 에러

      -> try - catch 블럭을 통하여 런타임 에러가 발생할 가능성이 있는 코드를 try문 안에 넣어 준다. 

      -> catch 블럭에서는 에러에 대한 처리를 한다.

	try {
            System.out.println("null 값 접근시 나오는 예외");
            printMyName(null); // (1) 예외 발생
        } 
        catch NullPointerException e) { // (2) catch문 = null 잡는 catch문 설정
            System.out.println("NullPointerException 발생!");
        }
        
        
        static void printMyName(String str) {
        String upperCaseAlphabet = str.toUpperCase();
        System.out.println(upperCaseAlphabet);
   	 }

 

 


컬렉션 프레임워크

- 특정 자료 구조에 데이터를 추가하고, 삭제, 수정, 검색하는 등의 동작을 수행하는 편리한 메서드들을 제공해준다.

Ex) 손님 배열을 설정할 때 배열길이가 손님의 수 만큼 설정해야하는데 손님의 수는 미리 알수가 없다. 

그래서 배열을 손님이 올때마다 늘려서 생성해주거나, 처음부터 엄청난 길이의 배열을 생성해줘야 한다.

해결책 -> ArrayList라는 컬렉션 프레임워크를 사용하면 자동으로 배열의 길이를 늘려주고 줄여주고 한다.

 

컬렉션 프레임워크의 구조 

ArrayList
데이터를 순차적으로 추가, (검색 유리)
중간에 있는 데이터를 추가,삭제 할 때 불리
메모리주소에서 몇번째인지 알 수 있으니깐
메모리주소 + (int * 몇번째)

LinkedList
찾으려는 값이 몇번째 인지 모름  -> 양옆 요소으로만 확인 (검색 불리)

중간에 값을 삭제하거나 추가할 때 유리 -> 양옆 요소만 바꿔주거나 추가하면 됨


 

댓글