일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- kotlin addview
- kotlin collection
- Kotlin Generic
- kotlin recyclerview
- Kotlin
- kotlin listview
- 코틀린
- 코틀린 내부 클래스
- 내용의동일성
- 해시
- lateinit
- 코틀린 람다함수
- 코틀린 data class
- class
- 객체의 동일성
- add view
- 코틀린 lateinit
- 프로그래머스
- kakao blind
- 컬렉션 함수
- 컬렉션함수
- 코틀린 컬렉션함수
- programmers # 프로그래머스 #큰수비교 #cmp_to_key()
- isNullOrBlank
- 코틀린 문자열
- 코틀린 제너릭
- 카카오 순위검색
- 프로그래머스 #탐욕법 #큰수만들기 #join #python
- 코틀린 중첩클래스
- collection function
- Today
- Total
목록코틀린 (15)
엔지니어 규의 IT 프로그래밍 다이어리
안드로이드 에서 리스트 뷰 란 유사하게 반복되는 뷰를 그리기 위한 도구이다. 리스트뷰를 그리는 방법은 실제로 여러가지 인데 addview, Listview, Recyclerview 방식이 있는데 첫번째로 addview 방식은 실제로 리스트뷰를 그리기위해서는 잘 사용되지 않으며, 두번째로 Listview 는 예전에 많이 사용되었으며, 세번째로 RecyclerView 는 최근에 가장 많이 사용되고 있고 가장 효율이 높다. Listview와 Recyclerview 는 addview 방식을 효과적으로 만든것이므로, addview 방식을 잘 알아야 Listview, Recyclerview를 잘 알 수 있다. 궁극적인 우리의 목적은 결국은 Recyclerview 를 만드는 것이나 이해를 돕기위해 Addview 방식..
상수 우리는 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..
우리는 컬렉션 클래스 중 가장 단순한 형태인 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 는 혼자서는 객체를 만들 수는 없고, 외부 클래스의 객체가 있어야만 생성과 사용이 가능한 클래스이다. 중첩 클래스는 형태만 내부에 존재할 뿐 실질적으로는 내용을 서로 공유할 수 없는 별개의 클래스 이지만, 내부 클래스는 외부 클래스 객체 안에서 사용되는 클래스 이므로 외부..
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 에서는 요소의 ..
오버라이딩 상속시에는 기본적으로 Super class 에 있는 함수와 같은 이름과 형태를 가진 함수는 Sub class 에서는 만들수 없다. 하지만 Super class 에서 허용만 한다면 overriding 이라는 방법으로 subclass 에서 같은 이름과 형태로 된 함수의 내용을 다시 구현 할 수 있다. 아래의 소스코드를 보자. fun main(){ var a = Animal() var b = Tiger() a.eat() b.eat() } open class Animal{ open fun eat(){ println("음식을 먹는다.") } } class Tiger : Animal(){ override fun eat() { println("고기를 먹는다.") } } 음식을 먹는다. 고기를 먹는다. cs..