JVM/Kotlin

· JVM/Kotlin
Set 은 중복이 제거된 집합으로 정의할 수 있다. SortedSet, NavigableSet, TreeSet 은 서로 연관관계가 깊은데 다음과 같은 다이어그램으로 나타낼 수 있다. SortedSet과 NavigableSet 은 인터페이스에 불과하기 때문에 결국 실전에서 사용할 컬렉션은 클래스인 'TreeSet'이다. TreeSet 의 구성 이름이 나타내듯 , Binary Search Tree (Red-BlackTree) 로 구현되어있고 주요 operation 별 시간 복잡도는 다음과같다. Operation Time Complexity Search O (Log N) Insert O (Log N) Delete O (Log N) 이진 트리로 구성되있기 때문에 Log 의 밑은 2다. 그래서 TreeSet 은 ..
· JVM/Kotlin
자료구조에 정렬 기준이 필요할 때 Comparator 라는 인터페이스 정의가 필요하다. Comparator Comprarator 는 인터페이스로 컬렉션을 정렬하는데 필요한 메소드를 정의하고있다. 기본 정렬기준 외에 다른 기준으로 정렬하고자 할 때 쓰인다. 아래 두 메소드는 이름은 다르지만 두 객체를 비교한다는 같은 기능을 목적으로 고안되었다. compare Comparator 의 유일한 추상 메소드로, 반드시 정의해줘야한다. // 우선순위 비교 // a == b => 0 // a Negative value // a > b => Positive value abstract fun compare(a: T, b: T): Int Comparable Comparator 를 커스텀 정렬 기준을 세울 때 ..
· JVM/Kotlin
Java 든 Kotlin 이든 문자열(String)은 reference 타입이다. Summary 구분 Java Kotlin == (Structural Equality) primitive: 값 비교 reference: (주소) 값 비교 primitive: 값 비교 reference: 참조하여 값 비교 .equals() reference 를 참조하여 값 비교 == 과 동일 === (Referential Eqaulity) X primitive: 값 비교 reference: (주소) 값 비교 주의할 점 1. 코틀린은 사실 primitive type 이 없다. 간단한 정수값을 할당한 변수에도 .toInt, toBoolean() 등 메소드 사용할 수 있는 이유가 여기있다. In Kotlin, everything i..
· JVM/Kotlin
When to use? (클래스 단위) 배열 요소의 총합, 최대, 최소값을 구하려 할 때. Why? 이전까지는 For loop을 돌려서 총합을 구했음. selector 를 지정하여 간결하게 계산 가능. OrderItem.kt data class OrderItem(val itemName: String, var price : Int, var count : Int) { } main.kt (기존 방법) fun main(args: Array) { val orderArray = arrayOf(OrderItem("Cake", 15000, 3), OrderItem("Coffee", 1500, 10), OrderItem("Tea", 2000, 10)) var sum:Int = 0 for(i in orderArray) {..
· JVM/Kotlin
Companion Object 클래스 안에 존재하는 SingleTon Object Comapnion이라는 이름을 가진 static Singletone companion keyword는 그냥 Companion이란 이름을 갖는 클래스 객체를 가리키는 shortcut 역할을 할 뿐. companion object 내에 생성된 변수, 메소드는 부모 클래스의 static 맴버가된다. class - companion object는 1:1 매칭 (오로지 1개씩 선언 가능) class ToBeCalled { companion object Test { val someInteger: Int = 10 fun callMe() = println("You are calling me :)") } } fun main(args: Ar..
· JVM/Kotlin
[Elvis Operator] val number : Int = number1 ?: 10 number1이 null -> 10 대입 not null -> number1 대입 [!!] Not Null 임을 개발자가 보장하는것. 협업시 다른사람이 임의로 !!처리한 변수를 null 값을 삽입할 시... 에러가 발생하기 쉽다 애초에 어떤 식에 '!!'키워드를 붙일 수 있다는 것 자체가 nullable Varaible 인 경우일 때 의도치 않게 null값을 갖는 경우 nullPointerException 발생 위험이 생기기 때문에 연산자를 남발하는 것은 좋지 못하다. [lateinit] Non-null Property 가 값이 저장되지 않은 상태를 컴파일러가 '인정'하도록 하는 키워드. 키워드 단어 뜻 그대로 늦은..
M_Falcon
'JVM/Kotlin' 카테고리의 글 목록 (2 Page)