전체 글

    [3편] 제네릭이란?

    제한(상한, 하한)된 와일드 카드의 개념에 대한 내용이다. 왜 제한된 와일드 카드를 쓰는지 이해하고, 이를 통해 논리적인 오류까지 잡아낼 수 있는 자바의 힘에 대해 느낄 수 있다. 와일드 카드를 제한하는 방법은 크게 두 가지가 있다. 상한 제한(Upper-Bounded)과 하한 제한(Lower-Bounded)이다. 그 내용에 대해서 확실하게 이해하는게 목표이다. 참고로 제네렉은 제한하는 방법이 ‘extends’ 하나 이고, 와일드 카드는 제한하는 방법이 ‘extends’와 ‘super’이다. wildcard의 상한 제한(Upper-Bounded) 위 메소드의 파라미터를 보면, 이렇게 설명할 수 있을 것 같다. box 파라미터 변수는 Box 타입의 인스턴스의 참조 값을 전달받는 매개변수이다. 그런데 제네릭..

    [2편] 제네릭이란?

    이번 챕터의 중요한 내용은 제네릭과 와일드 카드의 차이점이다. 이것 저것 많은 내용을 참고해서 정리해보았다. 제네릭과 상속에 대한 개념을 알고 아래 내용을 보도록 하자. 해당 글은 effective java의 “[ITEM 26] 로 타입은 사용하지 말라”와 이어지는 내용이다. 제네릭 메소드 그리고 와일드 카드 제네릭 메소드는 클래스 전체가 아니라 하나의 메소드에 대해서만 제네릭 선언을 하고 싶을 때 사용도가 높다. printList1 메소드가 제네릭 메소드이다. 리스트를 파라미터로 받아서 for 문을 돌려서 출력하는 기본적인 메소드이다. printList2 메소드는 제네릭 메소드는 아니고 일반 메소드이다. 다만, 와인드 카드로 매개변수화 된 List 콜렉션을 파라미터로 받고 있다. 사실 printList..

    [1편] 제네릭이란?

    제네릭을 쓰면서도 맞게 쓰는 건지 몰라서 찝찝한 마음에 업무를 했었는데 사내 이펙티브 자바 스터디 중 발표할 수 있는 기회가 생겨 정리를 해봤다. [로 타입(Raw Type)은 사용하지 말라] 로 타입(Raw Type): 제네릭 타입에서 Type Parameter를 전혀 사용하지 않을 때를 말한다. ex) List 의 raw type은 List 이다. 아래 Raw Type의 예제를 보자. 위 예제들은 공통적으로 컴파일은 되지만 Raw Type인 리스트를 사용하여 경고가 발생한다. 그리고 이 코드를 실행하면 ClassCastException이 발생한다. 오류는 컴파일할 때 발견하는 것이 좋다. 이번 글은 제네릭에 대해서 공부했던 내용과 제네릭을 사용하여 컴파일 시에 오류를 잡아 제네릭이 주는 장점을 공유하..

    KFirst And Sort

    1. 개요- N사 면접에서 나온 손코딩 문제- 왜 이걸 구현하지 못했니... 난이도 정말 낮은 건데 ㅜㅜㅜㅜ- 정말 정신 탈탈 털리니까 쉬운 것도 생각이 나지 않는구나... 더 열심히 하자!! 2. 문제- 문제는 정말 간단함.- 인자로 받는 K번째 수를 맨 앞으로 보내고 나머지를 오름차 순으로 정렬- void KFirstSort(int arr[], int arrLen, int k) k번째 값을 맨 앞으로 이동시키고 나머지 값들을 정렬한다.- 빅오(n) 정도 시간이 걸리도록 구현해 봄...- 순차적으로 우선순위 큐에 값을 넣고, k값을 만나면 맨 앞으로 이동- 이후, 우선순위 큐에서 값을 빼내면서 정렬시킴 3. 코드