[Kotlin] 리스트 정렬 -1

Sdoubleu·2023년 6월 4일
0

Kotlin

목록 보기
2/3
post-thumbnail

리스트 종류

  • 관리할 객체들(값들)이 있고 나중에 추가, 삭제 등을 하지 않을 경우 :
    arrayOf

    • Array의 경우에는 선언 당시에 배열의 크기가 정해져있다는 특징이 있습니다
    • var 배열이름 : Array<배열에 담기는 값의 타입> = Array<배열에 담기는 값의 타입>(배열의 크기){초기값}
      • 기본적으로 위와 같이 선언하며 크기를 선언 후 배열의 크기를 변경 할 수 없습니다
  • 관리할 객체들(값들)이 없으며 나중에 추가, 삭제 등을 하는 경우 :
    ArrayList, mutableListOf

  • 관리할 객체들(값들)이 있고 나중에 추가, 삭제 등을 하는 경우 :
    ArrayList, mutableListOf

  • 관리할 객체들(값들)이 있고 나중에 추가, 삭제 등을 하지 않고
    관리하는 값을 변경하지 못하게 강제하고자 할 때 :
    listOf

    • List의 특징이라면 읽기전용이라 생각하시면 편하다
    • 배열안의 내용을 수정할 수 없습니다

Array ( arrayOf ) 예시

    val arr1: Array<Int> = arrayOf()
    val arr2: Array<Int> = arrayOf(10)

    println("before arr1: ${arr1.toList()}")
    println("before arr2: ${arr2.toList()}")

    arr1.plus(1)
    arr2.plus(11)
    
    println("after arr1: ${arr1.toList()}")
    println("after arr2: ${arr2.toList()}")


ArrayList ( arrayListOf ) 예시

    val arr1: ArrayList<Int> = arrayListOf()
    val arr2: ArrayList<Int> = arrayListOf(10)

    println("before arr1: ${arr1.toList()}")
    println("before arr2: ${arr2.toList()}")

    arr1.add(1)
    arr2.add(11)
    
    println("after arr1: ${arr1.toList()}")
    println("after arr2: ${arr2.toList()}")


MutableListOf ( mutableListOf ) 예시

    val arr1: MutableList<Int> = mutableListOf()
    val arr2: MutableList<Int> = mutableListOf(10)

    println("before arr1: ${arr1}")
    println("before arr2: ${arr2}")

    arr1.add(1)
    arr2.add(11)
    
    println("after arr1: ${arr1}")
    println("after arr2: ${arr2}")


List ( listOf ) 예시

    val arr1: List<Int> = listOf()
    val arr2: List<Int> = listOf(10)

    println("before arr1: ${arr1}")
    println("before arr2: ${arr2}")

    arr1.plus(1)
    arr2.plus(11)

    println("after arr1: ${arr1}")
    println("after arr2: ${arr2}")

    var num = arr2.get(0)
    println("arr2.get(0) : $num")

Array 와 List의 차이점

  • arrayOflistOf는 둘 다 컬렉션을 생성하기 위해 사용되는 함수이다
    그러나 그들은 서로 다른 유형의 컬렉션을 반환한다

  • arrayOf 함수는 주어진 요소들로 구성된 배열을 생성한다
    반환된 값은 수정 가능한 Array 타입이다
    이는 배열의 크기가 고정되어 있고 요소를 추가하거나 제거할 수 없다는 의미이다

    val arr: Array<Int> = arrayOf(10)

    println("before arr: ${arr.toList()}")

    arr[0] = 20

    println("after arr : ${arr.toList()}")

  • listOf 함수는 주어진 요소들로 구성된 읽기 전용 리스트를 생성한다
    반환된 값은 읽기 전용 List 타입이다
    이는 리스트의 크기가 고정되어 있고 요소를 추가하거나 제거할 수 없다는 의미이다
   val arr: List<Int> = listOf(10)

    println("before arr: ${arr.toList()}")

    arr[0] = 20 // 컴파일 오류: 요소 변경 불가능

    println("after arr : ${arr.toList()}")

  • 결론
    따라서, arrayOf는 수정 가능한 배열을 생성하고,
    listOf는 수정할 수 없는 읽기 전용 리스트를 생성

Sorted()

  • 데이터 변경이 안되는 리스트(Immutable list)를 정렬할 때 사용합니다
    sorted()는 리스트의 원본을 변경하지 않고, 정렬된 리스트를 생성하여 리턴합니다

Sort()

  • 데이터 변경이 가능한 리스트(Mutable list)의 요소들을 정렬합니다
    리스트 자신이 갖고 있는 요소의 순서를 변경합니다
profile
개발자희망자

0개의 댓글