별의 공부 블로그 🧑🏻‍💻

🗒️ Source Code/Kotlin (17)

728x90
  1. 2021.04.05 [코틀린] 기본 스레드 생성하기

    ■ 스레드 루틴 만들기 (Java) - Thread 클래스 상속받기 - Runnable 인터페이스 구현 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 // (1) Thread 클래스를 상속받아 구현하기 class SimpleThread: Thread() { override fun run() { println("Current Threads: ${Thread.currentThread()}") } } // (2) Runnable 인터페이스로부터 run() 메서드 구현하기 class SimpleRunnable: Runnable { override fun run() { println("Current Threads: ${Thread.currentThread()..

  2. 2021.04.03 [코틀린] 컬렉션의 순서와 정렬 예제

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 fun main() { val unsortedList = listOf(3, 2, 7, 5) // reversed: 뒤집힌 순서로 컬렉션 반환 println("reversed: " + unsortedList.reversed()) // sorted: 요소를 정렬한 후 정렬된 컬렉션 반환 println("sorted: " + unsortedList.sorted()) // sortedDescending: 내림차순 정렬 println("sortedDescending: " + unsortedList.sortedDescending()) // sortedBy: 특정 비교식에 의해 정렬된 컬렉션 반환 println("sortedBy: " + unsor..

  3. 2021.04.03 [코틀린] 컬렉션의 분리와 병합 예제

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 fun main() { val list1 = listOf(1, 2, 3, 4, 5, 6) val list2 = listOf(2, 2, 3, 4, 5, 5, 6, 7) // union: 두 List를 합침 (중복 요소는 하나만) println(list1.union(list2)) // plus: 두 List를 합침 (중복 요소 포함), + 연산자와 같음. println(list1.plus(list2)) // partition: 주어진 식에 따라 2개의 컬렉션으로 분리해 Pair로 반환 val part = list1.partition { it % 2 == 0 } println(part) // zip: 동일한 인덱스끼리 Pair를 ..

  4. 2021.04.03 [코틀린] 컬렉션 요소 처리와 검색 예제

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 fun main() { val list = listOf(1, 2, 3, 4, 5, 6) val listPair = listOf(Pair("A" , 300), Pair("B", 200), Pair("C", 100), Pair("D", 200)) val listRepeated = listOf(2, 2, 3, 4, 5, 5, 6) // elementAt: 인덱스에 해당하는 요소 반환 println("elementAt: " + list.elementAt(1)) // e..

  5. 2021.04.03 [코틀린] 컬렉션 요소의 매핑 예제

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 fun main() { val list = listOf(1, 2, 3, 4, 5, 6) val listWithNull = listOf(1, null, 3, null, 5, 6) // map: 컬렉션에 주어진 식을 적용해 새로운 컬렉션 반환 println(list.map { it * 2 }) // mapIndexed: 컬렉션에 인덱스를 포함하고 주어진 식을 적용해 새로운 컬렉션 반환 val mapIndexed = list.mapIndexed { index, it -> index * it } println(mapIndexed) // mapNotNull: null을 제외하고 식을 적용해 새로운 컬렉션 반..

  6. 2021.04.03 [코틀린] 컬렉션 요소의 필터와 추출 예제

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 fun main() { val list = listOf(1, 2, 3, 4, 5, 6) val listMixed = listOf(1, "Hello", 3, "World", 5, 'A') val listWithNull = listOf(1, null, 3, null, 5, 6) val listRepeated = listOf(2, 2, 3, 4, 5, 5, 6) val map = mapOf(11 to "Java", 22 to "Kotlin", 33 to "C++") // fil..

  7. 2021.04.03 [코틀린] 컬렉션 요소의 검사 예제

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 fun main() { val list = listOf(1, 2, 3, 4, 5, 6) val listPair = listOf(Pair("A" , 300), Pair("B", 200), Pair("C", 100)) val map = mapOf(11 to "Java", 22 to "Kotlin", 33 to "C++") // all: 모든 요소가 일치해야 true 반환 println(list.all { it < 10 }) println(list.all { it % 2 == 0 }) // any: 최소한 하나 혹은 그 이상의 특정 요소가 일치해야 true 반환 pr..

  8. 2021.04.03 [코틀린] 컬렉션 요소의 처리와 집계 예제

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 fun main() { val list = listOf(1, 2, 3, 4, 5, 6) val listPair = listOf(Pair("A", 300), Pair("B", 200), Pair("C", 100)) val map = mapOf(11 to "Java", 22 to "Kotlin", 33 to "C++") // forEach: 각 요소를 람다식으로 처리 list.forEach { print("$it ") } println() list.forEachIndexed { index, val..

  9. 2021.04.03 [코틀린] 컬렉션 연산 예제

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 fun main() { val list1: List = listOf("one", "two", "three") val list2: List = listOf(1, 3, 4) val map1 = mapOf("hi" to 1, "hello" to 2, "Goodbye" to 3) println(list1 + "four") // + 연산자를 사용한 문자열 요소 추가 println(list1 + 1) // + 연산자를 사용한 정수형 요소 추가 println(list2 + listOf(5, 6, 7)) // 두 List의 병합 println(list2 - 1) // 요소의 제거 println(list2 - listOf(3, 4, 5)) // 일치하는 요..

  10. 2021.04.03 [코틀린] 불변형(Immutable) List를 가변형(Mutable)으로 변환하기

    - List의 toMutableList() 메서드를 사용하여 불변형(Immutable) List를 가변형(Mutable)으로 변환할 수 있음. (가변형 List를 불변형 List로 변환하는 메서드는 존재하지 않음.) 1 2 3 4 5 6 fun main() { val names: List = listOf("one", "two", "three") // 불변형 List 초기화 val mutableNames = names.toMutableList() // 새로운 가변형 List가 만들어짐. mutableNames.add("four") // 가변형 List에 하나의 요소 추가 println(mutableNames) } [one, two, three, four]

  11. 2021.04.02 [코틀린] 배열의 인덱스 찾아내기 예제 (제네릭, 배열 사용)

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 fun find(a: Array, Target: T): Int { for (i in a.indices) { if (a[i] == Target) return i } return -1 } fun main() { val arr1: Array = arrayOf("Apple", "Banana", "Cherry", "Durian") val arr2: Array = arrayOf(1, 2, 3, 4) println("arr.indices ${arr1.indices}") // indices는 배열의 유효 범위 반환 println(find(arr1, "Cherry")) // 요소 C의 인덱스 찾아내기 println(find(arr2, 2)) // 요소 2의..

  12. 2021.03.31 [코틀린] 접근 지정자(Getter, Setter) 예제

    게터와 세터가 포함되는 프로퍼티 선언에 대한 구조 var 프로퍼티_이름[: 프로퍼티 자료형] [= 프로퍼티 초기화] [get() { 게터 본문 }] [set(value) { 세터 본문 }] val 프로퍼티 이름[: 프로퍼티 자료형] [= 프로퍼티 초기화] [get() { 게터 본문 }] 프로퍼티를 var로 선언하는 경우 게터와 세터 둘 다로 선언할 수 있음. 프로퍼티를 val로 선언하는 경우 게터로만 선언 가능함. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 class User(_id: Int, _name: String, _age: Int) { // 프로퍼티 val id: Int = _id get() = field var name: St..

  13. 2021.03.30 [코틀린] 바깥 클래스 호출하기 (Inner Class)

    이너 클래스 에서 바깥 클래스의 상위 클래스 를 호출하려는 경우 super 키워드와 함께 @ 기호 옆에 바깥 클래스 이름을 작성함. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 open class Base { open val x: Int = 1 open fun f() = println("Base Class f()") } class Child : Base() { override val x: Int = super.x + 1 override fun f() = println("Child Class f())") // 이너 클래스 inner class Inside { fun f() = println("Inside Class f()") fun ..

  14. 2021.03.17 [코틀린] 사용자 예외 클래스 생성 & 사용 예제

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class InvalidNameException(message: String) : Exception(message) // 1. 사용자 예외 클래스 설정 fun main() { var name = "Kildong123" // 2. 숫자가 포함된 이름 try { validateName(name) } catch (e : InvalidNameException) { // 3. 숫자가 포함된 예외 처리 println(e.message) } catch (e : Exception) { // 기타 예외 처리 println(e.message) } } fun validateName(name: String) { if (name.matches..

  15. 2021.03.16 [코틀린] Try-Catch-Finally & Throw 예제

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 fun main() { var amount = 600 try { amount -= 100 checkAmount(amount) } catch (e : Exception) { println(e.message) } finally { println("이 문장은 무조건 실행됩니다.") } println("amount: $amount") } fun checkAmount(amount: Int) { if (amount < 1000) { throw Exception("잔고가 $amount 으로 1000 이하입니다.") } } 잔고가 500 으로 1000 이하입니다. 이 문장은 무조건 실행됩니다. amount: 500

  16. 2021.03.15 [코틀린] 람다식의 매개변수

    람다식의 매개변수 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 fun main() { // 매개변수가 없는 람다식 noParam({ "Hello World!" }) noParam { "Hello World!" } // 위와 동일한 결과, 소괄호 생략 가능 println() // 매개변수가 1개 있는 람다식 oneParam({ a -> "Hello World! $a" }) oneParam { a -> "Hello World! $a" } // 위와 동일한 결과, 소괄호 생략 가능 oneParam { "Hello World! $it..

  17. 2021.03.15 [코틀린] XOR을 이용하여 2개의 변수 값 바꾸기 (Swap 기법)

    XOR을 이용하여 2개의 변수 값 바꾸기 xor의 독특한 성질을 이용하여 2개의 변수 값을 바꿀 수 있음. 스왑(Swap) 기법 xor 연산자를 3번 사용하여 두 변수의 값을 바꿈. 임시 변수를 놓고 변수를 저장하여 옮기는 등의 작업을 하지 않아도 간편하게 두 수를 바꿀 수 있어 편리함. 1 2 3 4 5 6 7 8 9 10 11 fun main() { var number1 = 12 var number2 = 25 number1 = number1 xor number2 // number1 = 21, number2 = 25 number2 = number1 xor number2 // number1 = 21, number2 = 12 number1 = number1 xor number2 // number1 = 25..

728x90


📖 Contents 📖