본문 바로가기
개발/Kotlin

코틀린(Kotlin) 스터디 2 - Array, Collection(List, Set, Map)

by 윤호 2020. 1. 12.

코틀린에서 배열에 대해 공부해보자

 

Array

Array 배열의 생성 방법엔 두 가지가 있다

 

1. arrayOf() 함수를 이용하는 방법

2. filter를 이용하는 방법

 

위 코드는 모두 같은 결과를 갖는다

 

이렇게 생성한 배열의 요소에 접근 하는 방법

1. 인덱스로 접근

2. iterator를 이용하여 접근

위 코드는 모두 같은 결과를 갖는다

두번째 방법의 경우 i에는 요소값이 들어간다 작동 방식은 잘 모르겠지만

파이썬에서도 같은 방법을 쓰니 이해하기에 크게 무리는 없다

 

Colloection

이 부분이 스터디할 때도 그렇고 지금도 잘 정리가 안된다

이 아래 내용은 틀린 내용일 가능성이 높지만 그래도 내가 보기위해 정리하는 거니까 계속 작성해보려한다

잘못된 내용이 있다면 차차 수정해나갈예정

 

Java Collection Framework의 상속 구조

일단 List와 Set은 Collection 인터페이스를 상속받는 인터페이스다

Map은 Collection을 상속 받지 않는 별개의 인터페이스다

 

여기서 든 질문이 왜 Map까지 묶어서 Collection-List, Set, Map이라 하는가인데

보통 언어에서 집단 자료형을 Collection으로 묶어서 말하기 때문이라한다

 

이해가 잘 안가지만 일단 나는

  • Array
  • Collection
    • Collction
      • List
      • Set
    • Map

이런 구조로 생각하고있다. 상위 Collection은 개념적인거고 하위 Collection은 실질적인거로..

여기서 또 드는 의문은 집단 자료형을 Collection으로 묶어서 말하는 거라면 Array는 왜 빠져나와있나..?

 

이에 대한 답은 알게 된다면 수정하여 추가할 예정이다

 

 

다시 본론으로 돌아와 코틀린에서 List, Set, Map 사용을 알아보자

 

Java의 Collection과 다르게 Collection, List, Set, Map은 각각 처음 객체 생성시 수정이 불가능하다

Kotlin에선 수정 불가한 인터페이스와 수정 가능한 Mutable 인터페이스가 있다

여기서 Mutable인터페이스는 그냥 인터페이스를 상속받은 인터페이스다

List / MutableList

  • 객체를 계속 추가할 수 있다
  • 제네릭을 통해 관리할 객체를 정해줘야 한다
  • 인덱스를 통한 접근 가능

제네릭(generic)이란 클래스에서 사용할 타입을 클래스 외부에서  설정하는 것으로

여기선 그냥 요소의 타입을 지정해주는 것 정도로 이해하면 될 듯하다

 

List 자주 사용하는 메소드 : get, indexOf, subList, first/last, filter

MutableList 자주 사용하는 메소드 : add, removeAt, set, clear

Set / MutableSet

  • 인덱스를 통한 접근 불가
  • 중복되지 않게 객체를 관리

중복된 "C"는 출력되지 않음

 

같은 Collection을 상속 받기 때문에 자주 사용하는 메소드는 List와 같다

 

Map / MutableMap

 

  • Key를 통해 객체를 관리한다

 

자주 사용하는 메소드들 : mapOf, mutableMapOf, put, get, set, remove

 

 

댓글