[Android/Kotlin] [TIL] 컬렉션

[Android/Kotlin] [TIL] 컬렉션

컬렉션에 대해 알아보자

컬렉션

  • Kotlin에서 컬렉션이란 리스트, 맵, 집합 등 자료구조를 지원하는 것이다.

Kotlin에서의 컬렉션 사용 List, Map, Set

1. List
  • 읽기전용, 수정가능으로 구분된다.

  • 배열(array)와 다르게 크기가 정해져 있지 않아서 동적으로 값 추가가 가능하다.

    // 읽기전용 리스트입니다
    // 0번, 1번, 2번 인덱스에 접근해서 값을 변경할 수 없습니다
    var scores1 = listOf(1, 2, 3)
      
    // 수정가능 리스트입니다
    // 0번, 1번, 2번 인덱스에 접근해서 값을 변경할 수 있습니다
    var scores2 = mutableListOf(1, 2, 3)
    scores2.set(인덱스, )
      
    // 수정가능 리스트입니다
    // 0번, 1번, 2번 인덱스에 접근해서 값을 변경할 수 있습니다
    // array로 데이터들을 저장하는 ArrayList도 mutableListOf와 동일하게 사용할 수 있어요
    // 저장할 데이터의 자료형을 < > 안에 지정해야 사용할 수 있어요
    var scores3 = ArrayList<자료형>(1, 2, 3)
    scores3.set(인덱스, )
    
2. Map
  • 키, 값 쌍으로 이루어진 자료형이다.

  • 읽기전용, 수정가능으로 구분된다.

    		// 읽기전용 맵입니다
        // 변수명[키]로 데이터에 접근할 수 있습니다
        var scoreInfo1 = mapOf("kor" to 94, "math" to 90, "eng" to 92)
        println(scoreInfo1["kor"])
      
        // 수정가능 맵입니다
        // 변수명[키]로 데이터에 접근할 수 있습니다
        var scoreInfo2 = mutableMapOf("kor" to 94, "math" to 90)
        scoreInfo2["eng"] = 92
        println(scoreInfo2["eng"])
      
        // 맵의 키와 값을 동시에 추출해서 사용할 수 있습니다
        for((k,v) in scoreInfo2) {
            println("${k}의 값은 ${v}입니다")
        }
    
3. Set
  • 기본 활용

    • 순서가 존재하지 않고 중복없이 데이터를 관리하는 집합 자료형이다.

    • 읽기전용, 수정가능으로 구분한다.

    • 다른 컬렉션과 달리 요소가 존재하는지에 집중한다,

      //  읽기전용 Set입니다.
          var birdSet = setOf("닭", "참새", "비둘기")
          
      //  수정가능 Set입니다.
      //  var mutableBirdSet = mutableSetOf("닭", "참새", "비둘기")
      //  mutableBirdSet.add("꿩")
      //  mutableBirdSet.remove("꿩")
          println("집합의 크기는 ${birdSet.size} 입니다")
          
          var findBird = readLine()!!
          
          if(birdSet.contains(findBird)) {
              println("${findBird} 종류는 존재합니다.")
          } else {
              println("${findBird}는 존재하지 않습니다.")
          }
      
  • 고급 활용

    • 교집합, 차집합, 합집합으로 간편하게 요소들을 추출 가능하다.

      		// 귀여운 새의 집합
          var birdSet = setOf("닭", "참새", "비둘기", "물오리")
          
          // 날수있는 새의 집합
          var flyBirdSet = setOf("참새", "비둘기", "까치")
          
          // 모든 새의 집합 (합집합)
          var unionBirdSet = birdSet.union(flyBirdSet)
          
          // 귀엽고 날수있는 새의 집합 (교집합)
          var intersectBirdSet = birdSet.intersect(flyBirdSet)
          
          // 귀여운 새들중에서 날수없는 새의 조합 (차집합)
          var subtractBirdSet = birdSet.subtract(flyBirdSet)
          
          println("=====합집합=====")
          println("모든 새의 집합 : ${unionBirdSet}")
          
          println("=====교집합=====")
          println("귀엽고 날수있는 새의 집합 : ${intersectBirdSet}")
          
          println("=====차집합=====")
          println("귀엽고 날수없는 새의 집합 : ${subtractBirdSet}")
      

© 2023. All rights reserved.

by SoftyChoo