언어/Kotlin

[Kotlin 44강] List

연나연 2024. 1. 10. 17:47

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")

}​