본문 바로가기

Language

(105)
[Kotlin] 컬렉션 함수 (1) 여태까지 컬렉션을 for문으로 반복하여 포함된 아이템을 하나하나 꺼내어 사용했었다. 하지만 코틀린은 함수형 언어의 특징을 가지고 있기 때문에 좀 더 편리하게 컬렉션을 사용할 수 있다. 컬렉션 함수: list나 set, map과 같은 컬렉션 또는 배열에 일반 함수 또는 람다 함수 형태를 사용하여 for문 없이도 아이템을 순회하며 참조하거나 조건을 걸고, 구조의 변경까지 가능한 함수 forEach : 컬렉션에 포함된 모든 아이템을 it이라는 변수로 순서대로 참조 collection.forEach{ println(it) } filter : it에 조건을 걸어주면 조건에 맞는 객체만 collection으로 만들어서 반환 collection.filter{ it < 4 } map : it에 수식을 적용하여 값을 변..
[Kotlin] 컬렉션(2) Set과 Map https://winterflower.tistory.com/399 [Kotlin] 컬렉션(1) 리스트 리스트는 데이터를 모아 관리하는 컬렉션 클래스를 상속받는 서브 클래스 중 가장 단순한 형태로, 여러 개의 데이터를 원하는 순서로 넣어 관리하는 형태이다. 리스트에는 두 가지가 있다. List : winterflower.tistory.com 컬렉션 1탄에서는 컬렉션 중 List에 대해 알아보았다. 이번 게시물에서는 나머지 컬렉션인 Set과 Map을 알아보자. Set : 리스트와 달리, 순서가 정렬되지 않으며 중복이 허용되지 않는 컬렉션 인덱스로 위치를 지정하여 객체를 참조할 수는 없으며 contains로 객체가 set 안에 존재하는지를 확인하는 식으로만 확인한다. sampleSet.contains(”디모”..
[Kotlin] Data Class와 Enum Class Data Class : 데이터를 다루는 데 최적화된 클래스 5가지 기능을 내부적으로 자동으로 생성해준다. 1. 내용의 동일성을 판단하는 equals() 자동구현 2. 객체의 내용에서 고유한 코드를 생성하는 hashcode()의 자동구현 3. 포함된 속성을 보기쉽게 나타내는 toString()의 자동구현 4. 객체를 복사하여 똑같은 내용의 새 객체를 만드는 copy()의 자동구현 copy() 함수를 통해 새 객체를 생성할 때는 아무 파라미터가 없으면 똑같은 내용으로 생성함 val a = Data("A", 7) val b = a.copy() 파라미터가 있다면 해당 파라미터를 교체하여 생성함 val a = Data("A", 7) val b = a.copy("B") // b는 Data("B", 7)으로 생성됨 ..
[Kotlin] 중첩클래스와 내부클래스 중첩클래스 (Nested Class) : 하나의 클래스가 다른 클래스의 기능과 강하게 연관되어 있다는 의미를 전달하기 위해 만들어진 형식. 형태만 내부에 존재할 뿐 실질적으로는 서로 내용을 공유할 수 없다. 선언 class Outer{ class Nested{ } } 사용 Outer.Nested() 내부 클래스 (Inner Class) : 혼자서 객체를 만들 수는 없고 외부 클래스의 객체가 있어야만 생성과 사용 가능. 외부 클래스 객체의 속성이나 함수를 사용할 수 있다. class Outer{ inner class Inner{ } } Outer 클래스와 Inner 클래스에 같은 이름의 속성이나 함수가 있다면 this@OuterClass이름으로 참조한다. fun main(){ Outer.Nested().i..
[Kotlin] 함수의 다양한 기능 오버로딩 : 같은 스코프 안에서 같은 이름의 함수를 여러 개 만들 수 있는 기능. 함수의 이름이 같더라도 파라미터의 타입이나 개수가 다르면 서로 다른 함수로 동작한다. * 파라미터의 이름만 다르고 자료형과 개수가 동일하다면 오버로딩을 할 수 없다. fun same(a: Int, b: Int) fun same(x: Int, y: Int) fun main(){ read(7) // 숫자 7 입니다 read("감사합니다") // 감사합니다 } fun read(x: Int){ println("숫자 $x 입니다") } fun read(x: String){ println(x) } default arguments : 파라미터를 받아야 하는 함수이지만 별다른 파라미터가 없더라도 기본값으로 동작 fun main(){ de..
[Kotlin] null 처리와 동일성의 확인 null check null 상태로 속성이나 함수를 쓰려고 하면 null pointer exception이 발생하기 때문에 nullable 변수를 사용할 때 null 체크 없이 코드가 컴파일 되지 않는다. var sample: String? = null if(sample != null) println(sample.toUpperCase()) null 체크를 하기 위해 일일히 if문으로 조건을 체크하는 대신 좀 더 편리한 방법? ?. (null safe operator) : 참조연산자를 실행하기 전에 먼저 객체가 null인지 확인부터 하고 객체가 null이라면 뒤따라오는 구문을 실행하지 않는다. sample?.toUpperCase() ?: (elvis operator) : 객체가 null이 아니라면 그대로 ..
[Kotlin] 문자열 함수 val test1 = "Test.Kotlin.String" // 문자열 길이 println(test1.length) // 18 // 대소문자 변환 println(test1.toLowerCase()) // test.kotlin.string println(test1.toUpperCase()) // TEST.KOTLIN.STRING // 특정 문자열을 기준으로 문자열 분할 // * Java와 달리 정규식이 아닌 일반 문자열을 넣어도 동작 val test2 = test1.split(".") println(test2) // [Test, Kotlin, String] // 문자열이 들어가 있는 배열을 다시 하나의 문자열로 합침 println(test2.joinToString()) // Test, Kotlin, Str..
[Kotlin] 컬렉션(1) 리스트 리스트는 데이터를 모아 관리하는 컬렉션 클래스를 상속받는 서브 클래스 중 가장 단순한 형태로, 여러 개의 데이터를 원하는 순서로 넣어 관리하는 형태이다. 리스트에는 두 가지가 있다. List : 생성 시에 넣은 객체를 대체, 추가, 삭제 할 수 없음 MutableList : 생성 시에 넣은 객체를 대체, 추가, 삭제가 가능 리스트 생성 listOf(1, 2, 3) mutableListOf("A", "B", "C") MutableList에서는 요소의 추가, 변경, 삭제, 무작위 섞기, 정렬 가능 요소의 추가 : add(데이터) / add(인덱스, 데이터) 변경 : list[인덱스] = 데이터 삭제 : remove(데이터) / removeAt(인덱스) 무작위 섞기 : shuffle() 정렬 : sort() ..