Kotlin 의 컬렉션 :자료구조에 나오는 다양한 데이터 관리 기법을 사용할 수 있도록 제공하고 있는 라이브러리 ▶List : 순서를 통해 관리한다. ▶Map : 이름을 통해 관리한다. ▶Set : 집합 관리
List
배열과 동일하게 인덱스 번호를 통해 객체를 관리한다. 배열을 크기가 정해지면 변경할 수 없지만 List는 추가, 삭제 등이 가능하다.
List 생성
▶listOf : 불변형 리스트 생성 ▶mutableListOf : 가변형 리스트 생성 ▶emptyList : 비어있는 불변형 리스트를 생성한다. ▶listOfNotNull : null을 제외한 나머지만으로 리스트를 생성한다.
▼ 리스트를 생성해보자
fun main(){
// 리스트 생성
// 불변형 리스트
// 리스트 생성 이후 값의 추가, 수정, 삽입, 삭제 등이 불가능하다.
val list1 = listOf(10,20,30,40,50)
println("list1 : $list1")
val list2 = listOf("문자열1","문자열2","문자열3")
println("list2 : $list2")
//타입이 달라도된다.
val list3 = listOf(100,11.11,"문자열",true)
println("list3 : $list3")
// 수정 가능한 리스트 ArrayList로 생성된다.
// 텅 비어 있는 수정 가능한 리스트 생성 : 나중에 객체를 추가할 수 있다.
val list4 = mutableListOf<Int>()
// 생성시 관리할 객체를 지정할 수 있다.
val list5 = mutableListOf("문자열1", "문자열2", "문자열3")
println("list4 : $list4")
println("list5 : $list5")
// 비어있는 수정 불가능한 리스트 (의미없음,, 쓸일없을거다)
val list6 = emptyList<Int>()
println("list6 : $list6")
}
▼ null 포함 가능 여부
fun main(){
// null이 있을 경우
// null 을 포함한다.
val list7 = listOf(10, 20, null, 40, null, 60, 70)
// null 을 포함하지 않는다
val list8 = listOfNotNull(10, 20, null, 40, null, 60, 70)
println("list7 : $list7")
println("list8 : $list8")
}
▼ 리스트 객체 가져오기
1. for문 사용 2. get 메서드 사용 : 0부터 시작하는 인덱스 번호를 통해 객체를 추출할 수 있다. ▷ Kotlin의 리스트는 배열과 동일하게 [ ]를 사용할 수 있다.
fun main(){
val list1 = listOf(10,20,30,40,50)
// for문 사용
for(item in list1){
println("item : $item")
}
// 관리하는 객체의 개수
println("List size : ${list1.size}")
// 관리하는 객체에 접근한다.
// [ ] 연산자를 통해 순서값(0부터 1씩 증가)를 지정하여 접근한다.
println("list1 0 : ${list1[0]}")
println("list1 1 : ${list1[1]}")
}
기타메서드
indexOf : 지정된 값의 인덱스 번호를 반환한다. 값이 없을 경우 -1을 반환한다. lastIndexOf : 지정된 값이 마지막에 해당하는 값의 인덱스 번호를 반환한다. 값이 없을 경우 -1을 반환한다. subList : 지정된 범위의 값을 추출하여 새로운 리스트를 생성해 반환한다.
fun main(){
val list9 = listOf(10,20,30,10,20,30)
// 지정한 객체가 앞에서 부터 몇 번째에 있는가...
val index1 = list9.indexOf(20)
println("index1 : $index1")
// 지정한 객체를 뒤에서부터 찾아서 앞에서 부터 몇 번째에 있는가..
val index2 = list9.lastIndexOf(20)
println("index2 : $index2")
// indexOf, lastIndexOf 모두 없는 것을 지정하면 -1을 반환한다.
val index3 = list9.indexOf(100)
println("index3 : $index3")
// 일부를 발췌하여 새로운 리스트를 생성한다.
// 순서값 1 ~ 3 - 1 까지
val list10 = list9.subList(1, 3)
println("list10 : $list10")
}