일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 객체의 동일성
- programmers # 프로그래머스 #큰수비교 #cmp_to_key()
- 컬렉션함수
- kakao blind
- 코틀린 lateinit
- 프로그래머스 #탐욕법 #큰수만들기 #join #python
- class
- 해시
- Kotlin
- lateinit
- 코틀린
- 프로그래머스
- 코틀린 data class
- 코틀린 컬렉션함수
- kotlin addview
- 카카오 순위검색
- 컬렉션 함수
- kotlin recyclerview
- Kotlin Generic
- 코틀린 제너릭
- 코틀린 중첩클래스
- 코틀린 내부 클래스
- isNullOrBlank
- 코틀린 문자열
- collection function
- 코틀린 람다함수
- add view
- kotlin listview
- kotlin collection
- 내용의동일성
- Today
- Total
목록프로그래밍 언어/코틀린 (28)
엔지니어 규의 IT 프로그래밍 다이어리
상수 우리는 var, val 을 이용하여 기초적인 변수를 선언하는 방법을 알고 있다. var은 한번 할당한 객체가 있더라도, 다른 객체로 변경하여 할당할 수 있으며, val은 한번 객체를 할당시 다시 할당된 객체를 바꿀 수 없다. 하지만 여기서 주의할점은 val은 할당된 객체를 바꿀 수 없을 뿐이지 객체 내부의 속성을 변경할수 없는것은 아니다. 그런데 절대 변경이 불가능한것이 있는데 '상수' 라는 것이다. 상수는 컴파일 시점에 결정되어 절대 바꿀수 없는 값이며 선언은 const val CONST_A = 1234 처럼 val 앞에 const를 붙인다. 상수로 선언될 수 있는 값은 기본자료형만 가능하며 런타임에 생성될 수 있는 일반적인 다른 클래스의 객체들은 담을 수 없다. 상수는 클래스의 속성이나, 지역변..
컬렉션함수(1) 보다 좀더 복잡한 기능의 컬렉션 함수를 알아보자. associateBy : 객체에서 키를 따로 뽑아내서 map으로 만드는 함수이다. collection.associateBy{it.name} 예를들어 이름과 태어난해가 들어간 Person 객체가 있고, 이 객체들을 list 에 넣어놨을때, 이 list를 이름을 key 로하고 객체를 value 로 하는 Map으로 변경하려면 associateBy 에 중괄호안에 key로 사용할 이름 속성을 넣어주면 자동으로 Map으로 변환하여 반환한다. groupBy : Key 가 같은 아이템끼리 배열로 묶어 map으로 만드는 함수 collection.groupBy{it.birthYear} 특정한 값을 key로 지정하여 해당값을 가진 객체끼리 묶은 배열을 val..
지금까지 우리는 collection을 for(item in collection) 문으로 반복하여 포함된 아이템을 하나하나 꺼내어 사용했었다. 하지만 코틀린은 함수형 언어의 특징을 가지고 있기 때문에 좀더 편리하게 컬렉션을 사용할 수 있는데 컬렉션 함수를 사용하면된다. 컬렉션 함수는 list나 set, map과 같은 컬렉션 또는 배열에 일반 함수 또는 람다 함수 형태를 사용하여 for문 없이도 아이템을 순회하며 참조하거나 조건을 걸고, 구조의 변경까지 가능한 여러가지 함수를 지칭한다. forEach : 컬렉션 객체에 사용하게 되면 중괄호 안에서 컬렉션안에 포함된 모든 item을 it이라는 변수로 순서대로 참조할 수 있다. collection.forEach{ println(it) } filter : 중괄호안..
우리는 컬렉션 클래스 중 가장 단순한 형태인 List를 앞에서 배웠다. 이번에는 Set과 Map 을 알아보자. Set Set은 List와 달리 순서가 정렬되지 않으며 중복이 허용되지 않는 컬렉션이다. 따라서 set 은 인덱스로 위치를지정하여 객체를 참조할 수 없으며, contains 로 객체가 set 안에 존재하는지 확인하는 방법이 있다. set 역시 Set 과 MutableSet 이 존재하고, List와 마찬가지로 객체의 추가, 삭제가 가능한지 여부에 따라 사용하며 요소의 추가는 add(데이터) , 삭제는 remove( 데이터) 를 사용한다. fun main(){ val a = mutableSetOf("귤", "바나나", "키위") for (item in a) { println("${item}") } ..
Data class 데이터 클래스는 데이터를 다루는 데에 최적화된 클래스로, 5가지 기능을 내부적으로 자동으로 생성해준다. 첫번째 : 내용의 동일성을 판단하는 equals() 의 자동구현 두번째 : 객체의 내용에서 고유한 코드를 생성하는 hashcode() 의 자동구현 세번째 : 포함된 속성을 보기쉽게 나타내는 toString()의 자동구현 네번째 : 객체를 복사하여 똑같은 내용의 새 객체를 만드는 copy()의 자동구현 다섯째 : 속성을 순서대로 반환하는 componentX()의 자동구현 fun main(){ val a = General("보영",212) println(a == General("보영",212)) //false println(a.hashCode()) // 980546781 println(..
코틀린에서는 기본적으로 클래스안에 클래스를 하나 더넣을수 있는 중첩클래스(Nested Class)를 지원한다. 중첩 클래스는 하나의 클래스가 다른 클래스의 기능과 강하게 연관되어 있다는 의미를 전달하기위해 만들어진 형식으로, 사용할때는 외부클래스의 이름.중첩클래스의 이름 으로 사용하게 된다. 이때 중첩 클래스 대신 내부 클래스(inner class) 라는것을 사용할 수도 있다. 중첩클래스에 inner 라는 키워드를 붙인 내부 class 는 혼자서는 객체를 만들 수는 없고, 외부 클래스의 객체가 있어야만 생성과 사용이 가능한 클래스이다. 중첩 클래스는 형태만 내부에 존재할 뿐 실질적으로는 내용을 서로 공유할 수 없는 별개의 클래스 이지만, 내부 클래스는 외부 클래스 객체 안에서 사용되는 클래스 이므로 외부..
코틀린에서도 대부분의 언어에서 지원하는 함수의 overloading이 지원된다. 이것은 같은 scope 안에서 같은 이름의 함수를 여러개 만들 수 있는 기능이다. 이름이 같더라도 파라미터의 자료형이 다르거나, 파라미터의 갯수가 다르다면 서로 다른 함수로 동작할 수 있습니다. 다만 패러미터의 이름만 다르게 묶고 자료형과 갯수가 동일하다면 오버로딩을 할 수 없다. 위와 같은 경우는 동작이 안된다. fun main(){ read(7) //숫자 7입니다. read("감사합니다.") //감사합니다. } fun read(x: Int){ println("숫자 ${x}입니다.") } fun read(x: String){ println(x) } 위 코드를 실행해보면 함수이름은 같지만 자료형을 구분하여 함수가 매칭되어 실..
Null 값을 처리하는 방법 우리는 코틀린에서 nullable 변수를 만들어 객체가 들어있지 않은 Null 상태를 만들 수 있다. fun main(){ var sample : String? = null if (sample != null){ println(sample.toUpperCase()) } } 하지만 null 상태로 속성이나 함수를 쓰려고 하면 null pointer exception이 발생하기 때문에 nullable 변수를 사용할때는 null check 없이 코드가 컴파일되지 않는다. null check 을 하기위해 일일히 if문으로 조건을 체크하는 대신 편리한 방법을 제공한다. ?. -> null safe operator ?: -> elvis operator !!. -> non-null asse..
우리는 코틀린에서는 'String' 이라는 클래스로 문자열을 다루며, 쌍따옴표 사이에 문자열을 넣어 literal 을 만들면 새 String 객체가 생성되는것을 확인하였다. 코틀린에서는 이 String 클래스와 관련된 여러 속성과 함수가 있는데 그중 자주 쓰이는 것들을 아래 소스코드로 알아보자. fun main(){ val test1 = "Test.Kotlin.String" println(test1.length) //18 println(test1.toLowerCase()) // test.kotlin.string println(test1.toUpperCase()) // TEST.KOTLIN.STRING val test2 = test1.split(".") println(test2) // [Test, Kotl..
리스트 리스트는 '데이터를 모아 관리' 하는 컬렉션 클래스르 상속받는 서브클래스중가장 단순한 형태로, 여러개의 데이터를 원하는 순서로 넣어 관리하는 형태이다. 리스트에는 두가지가 있는데 그냥 List 와 MutableList 가 있는데, 두 클래스의 차이는 List 같은 경우 생성시에 넣은 객체를 대체,추가,삭제 할 수 없으며 MutableList는 생성시에 넣넣은 객체를 대체, 추가, 삭제가 가능하기 때문에 상황에 따라 맞춰 이를 선택하면 된다. 리스트를 만들떄는 전용함수인 listOf 나 mutableListOf 를쓰고, 괄호안에 리스트에 담을 데이터 요소를 나열하면 된다. ex : listOf(1,2,3) mutableListOf("A","B","C") 또한 MutableList 에서는 요소의 ..