Java&Kotlin

    [Kotlin] Collection 의 크기가 작은 경우 Sequence 가 성능이 더 떨어질 수 있는 이유

    Sequence는 다음과 같은 특징이 있어 컬렉션의 크기가 큰 경우 성능면에서 적합하다. 컬렉션의 계산 결과를 저장하는 과정에서 중간 리스트가 만들어지지 않음. --> 많은 메모리를 차지하게 될 수 있음 lazy 연산 방식으로 step-by-step 연산 방식으로 이루어 지지 않음. --> 최소한의 operation 이 이루어짐 infinite sequence가 가능하다. (

    [Kotlin] 제네릭스

    [Kotlin] 제네릭스

    🌟 화면을 넓게 하시면 오른쪽에서 목차를 확인하실 수 있습니다. :) 제네릭 타입 파라미터 제네릭 타입 파라미터를 사용하여 제네릭 함수, 프로퍼티, 클래스를 선언하는 방식은 자바와 비슷하다. 제네릭스를 사용하여 타입 파라미터를 받는 타입을 정의할 수 있고, 타입 인자로 치환하여 인스턴스를 만들 수 있다. 타입 인자(type argument)는 프로그래머가 직정 타입 인자를 정의하거나 컴파일 과정에서 타입 추론에 의해 타입 인자가 추론될 수 있어야한다. List // 타입 파라미터로 String을 받고 있는 리스트 제네릭 함수와 프로퍼티 리스트를 다루는 함수를 작성할 때, 모든 리스트를 다룰 수 있는 함수를 만들고 싶을 때 제네릭 함수를 작성한다. 제네릭 확장 프로퍼티도 마찬가지로 타입 마라미터를 선언하여..

    [Kotlin] 클래스와 인터페이스

    인터페이스 자바에서의 인터페이스 사용방식과 유사하고, default method 또한 가능하다. syntax interface 로 선언 구현 클래스 뒤에 :(인터페이스이름) 을 사용하여 구현(implement) override fun (인터페이스에 구현되어 있지 않은 메서드) 로 메서드 오버라이드 default method의 경우 특별한 키워드 없음. super.메소드_이름 : 상위 인터페이스의 메서드를 호출 여러 개의 상위 인터페이스를 구현할 때 같은 메서드가 존재하는 경우? —> 자바와 마찬가지로 컴파일 에러가 나서 오버라이딩 메서드를 제공해야함. open, final , abstract 변경자 final이 default로, 상속 및 오버라이딩이 금지되어있다. open 을 통해 상속이나 오버라이드를 ..

    [JAVA] HashMap,HashSet에서 Object를 key로 가지는 경우 get()

    자바의 HashMap 구현체를 사용하면서 배열이나 사용자 정의 값을 키로 가지는 경우 사용하는 방법을 정리한 글입니다. 자주 쓰이는 정수값이나 문자열은 단순히 get()을 통해서 값을 얻어올 수 있지만, 그렇지 않은 경우에는 추가적인 작업이 필요합니다. HashMap에서 key의 entry 찾기 자바 HashMap 클래스는 hashCode()와 equals() || ==을 이용하여 key에 해당하는 entry를 찾습니다. 구체적으로 k라는 키를 찾는다고 할 때 다음의 단계를 거칩니다. k.hashCode()를 통해 해당 entry가 담긴 버킷을 탐색 얻은 버킷의 entry 키가 k1이라고 할 때, k==k1 || k.equals(k1) 이면 k1 entry를 리턴 배열이나 직접 구현한 객체를 키로 사용하..

    [JAVA] 제너릭 타입으로 배열을 만들 수 없는 이유 (타입 추론)

    여러개의 Set을 배열로 구현해서 다음과 같이 add하면 warning이 뜬다. Set[] set = new Set[2]; set[0] = new HashSet(); set[0].add(0); add 시 warning: add하는 값의 type check가 보장이 안되어서인 것 같다. Unchecked call to 'add(E)' as a member of raw type 'java.util.Set' "How to make an array of map" 왜 Map으로 배열을 만들 수 없는지 더 찾아보았고, 그 이유는 제너릭 타입은 타입 추론이 일어나기 때문에 typesafe 하지 않아 ClassCastException 런타임 오류가 발생할 수 있어서이다. 예를 들어서, 아래처럼 선언을 했다고 했을 때,..