| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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
- class
- 코틀린 내부 클래스
- Kotlin Generic
- 컬렉션함수
- 코틀린 data class
- 카카오 순위검색
- lateinit
- 코틀린 제너릭
- 코틀린 컬렉션함수
- 코틀린 람다함수
- 코틀린 중첩클래스
- 내용의동일성
- collection function
- kakao blind
- 코틀린 문자열
- 프로그래머스
- kotlin collection
- add view
- Kotlin
- programmers # 프로그래머스 #큰수비교 #cmp_to_key()
- 컬렉션 함수
- kotlin recyclerview
- 코틀린 lateinit
- 프로그래머스 #탐욕법 #큰수만들기 #join #python
- kotlin listview
- 코틀린
- 객체의 동일성
- isNullOrBlank
- 해시
- Today
- Total
목록분류 전체보기 (46)
엔지니어 규의 IT 프로그래밍 다이어리
지금까지 우리는 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 에서는 요소의 ..
제너릭이란 클래스나 함수에서 사용하는 자료형을 외부에서 지정할 수 있는 기능이다. 예를 들어 class A 와 A를 상속받은 class B가 있을때 이 두 클래스의 인스턴스를 공용으로 사용하는 하나의 함수에 파라미터로 받으려면 super class인 A 의 자료형으로 받으면 B는 자동으로 A에 캐스팅 되면서 두 클래스 모두 함수의 패러미터로 사용이 가능하다. 하지만 캐스팅 연산을 거치는것은 프로그램의 속도를 저하시킬수 있다는 단점이 있다. 그래서 Generic 이라는 개념이 등장했다. 제너릭은 함수나 클래스를 선언할때 고전적인 자료형 대신 실제 자료형으로 대체되는 타입 패러미터를 받아 사용하는 방법이다. 이 타입패러미터에 특정 자료형이 할당이 되면 제너릭을 사용하는 모든 코드는 할당된 자료형으로 대체되어..
우리는 클래스의 상속을 통해 클래스를 '확장' 하는 방법을 배운적이 있다. 하지만 클래스를 다형성의 관점에서 살펴본적은 없다. 예를 들어 음료를 마시는 일에 비유를 해보자. 그냥 목이말라 아무음료나 마셔도 될때도 있지만 기호에 맞춰 콜라,생수,커피 등 원하는 음료를선택할 때도 있다. 이때 콜라를 '콜라 자체' 로도 볼수 있지만 '음료라는 특성' 으로도 볼 수 있도록 만드는 것이 다형성의 개념이다. 코틀린의 내부동작을 살펴보자. '음료' 라는 클래스와 이를 상속받은 '콜라'라는 클래스가 있다면 콜라의 인스턴스를 만들때 상속관계에 있는 super class 인 음료라는 객체를 담는공간에 콜라의 내용을 담는 내용이 추가되어 생성된다. 이렇게 만들어진 콜라의 인스턴스는 음료를 담는 변수에 저장하면 음료의 기능만..