※ 데이터 클래스
단순히 값을 담는 클래스
자바 : VO, DTO
코틀린 : 데이터클래스
ㄴ 기본적으로 DTO 가 제공되며, getter 도 자동적으로 제공한다.
하지만 setter는 변수가 val 일 경우 제공하지 않는다.
ㄴ 상수인 값을 변경하고자 할 때에는 copy 메소드를 통해 값이 변경된 새로운 객체를 생성한다
▷ 데이터클래스의 선언
data class Book1(val title:String, val author:String, val price:Int)
하지만 이렇게 선언한다면 매개변수가 없는 생성자로, 객체생성을 하지 못한다.
▷ 매개변수가 없는 빈 객체를 만들고싶다면
data class Book2(
val title: String = "No Title",
val author: String = "No Author",
val price: Int = 0
)
위와같이 데이터클래스의 모든 속성에 기본값을 주어야 한다
//main
val book2 = Book2()
println("${book2.title} / ${book2.author} / ${book2.price}")
※ Collections
▶ List
코틀린의 List 는 기본적으로 읽기 전용이며 수정이 되질 않는다
List : 수정불가
ArrayList : 수정가능
▷ List 생성
1. List 객체를 생성하는 방식으로
2. listOf 함수를 이용
List 객체 생성할 때 첫번째 인자는 리스트의 사이즈이며, 두번째는 리스트의 값을 초기화하는 람다식이다.
사이즈가 5이므로 0,1,2,3,4 가 각각 람다의 매개변수 i 로 전달되고,
i 의 인덱스에 해당하는 값은 i+i 의 값으로 초기화 된다.
두번째 방법은 listOf 함수에 list 에 넣을 요소들을 인자로 넣어주면 된다.
▷ List 값 출력
자바에서와 같이 get() 메소드를 통하지 않고도 배열처럼 대괄호를 통해 요소에 접근이 가능하다
var list3 = listOf("A","B","C","D","E")
for(idx in 0..(list3.size-1)){
println(list3[idx])
}
=
▷ 수정이 가능한 리스트 = ArrayList 선언
1. ArrayList 클래스의 생성자로 객체 만들기
- 자바와 같이 생성 후에는 add() 메서드로 추가 가능
2. arrayListOf 함수 사용
- 사용법 List 와 동일
- 대괄호로 요소에 접근가능 ( arr[0] )
▶ Map
Map : 수정 불가
HashMap : 수정 가능
▷ Map 선언
var map = mapOf(Pair("A","Seohyun"),
Pair("B","Hyerim"),
Pair("C", "Jiwon"),
Pair("D","Jooeun"))
mapOf 메소드는 Pair 라는 타입의 가변인자를 받는다
이렇게 키, 값 쌍(Pair) 의 여러 인자를 넣어 map 을 생성할 수 있다
▷ Map 접근
println(map["A"])
println(map["B"])
println(map["C"])
println(map["D"])
리스트와 비슷하게 대괄호로 [키] 형식으로 요소에 접근할 수 있다.
▷ HashMap 선언
HashMap 객체를 생성한 다음, List 와 다르게
대괄호로 존재하지 않는 키의 요소에도 값을 부여할 수 있다.
var map2 = HashMap<String, String>()
map2["A"] = "Joongsoo"
map2["B"] = "Younghwan"
map2["C"] = "Minji"
또한 HashMapOf() 메서도를 사용해서도 HashMap을 생성 할 수 있다
var map3 = hashMapOf<String, String>()
map3["A"] = "Joongsoo"
map3["B"] = "Joongsoo"
map3["C"] = "Joongsoo"
▷ HashMap 선언
println(map["A"])
println(map["B"])
println(map["C"])
▶ Range
Range 는 숫자나 문자의 범위를 나타낼 때사용된다.
특정 명시된 범위를 나타내며, 코드에서 반복문으로 명시된 범위만큼의 숫자와 문자를 순서대로 출력할 수 있다.
▷ Range 선언
var intRange = IntRange(0,10)
var charRange = CharRange('a','e')
var longRange = LongRange(11,20)
보통은 코틀린에서 지원하는 Range 문법을 사용함
var intRange1 = 0..10
var charRange1 = 'a' .. 'e'
▷ Range 접근
for(i in intRange)
println(i)
for(i in charRange)
println(i)
for(i in longRange)
println(i)
'Kotlin' 카테고리의 다른 글
[Kotlin] 목록에서 랜덤으로 1개만 가져오기 (response : objectDTO) (0) | 2022.11.22 |
---|---|
[Kotlin] 유용한 함수 with / run (0) | 2022.11.15 |
[Kotlin] 예외처리 / 람다 / 클래스 (0) | 2022.11.14 |
[Kotlin] 조건문 / 반복문 (0) | 2022.11.14 |
[Kotlin] 함수 / 변수 / 자료형 / 배열 (0) | 2022.10.24 |