[Kotlin] 컬렉션

이상목·2024년 4월 29일
0

Kotlin

목록 보기
3/20
post-thumbnail

컬렉션이란 ?

  • 코틀린은 자바와 비슷해 섞어 쓰기가 쉽다.
  • 기본 컬렉션 타입으로 sets, lists, maps를 제공한다.
    • 각 컬렉션 타입은 read-only / mutable 인터페이스가 구현된 한 쌍으로 존재한다.
    • read-only는 읽기 전용 mutable은 element 수정이 가능하다.
  • 컬렉션의 최상위 계층은 Collection로 Iterable를 상속받는다.
    • Collection을 파라미터로 받게 되면 다른 컬렉션 타입의 컬렉션들도 받을 수 있다.
  • 컬렉션은 자료구조를 편하게 다루기 위해 제공하는 라이브러리이다..
  • 코틀린에서의 컬렉션은 자체 컬렉션을 제공하지 않는다는걸 기억하자.

왜 자체 컬렉션을 제공하지 않을까 ?

표준 자바 컬렉션을 활용함으로써 자바 코드와 상호작용하기 더 쉽기 때문이다.
자바에서 코틀린함수를 호출하거나, 코틀린에서 자바코드를 호출 할 때 서로 변환할 필요 없이 같은 클래스를 사용한다.

코틀린에서는 자바보다 더 많은 기능을 사용할 수 있다 !!!!


리스트의 마지막 요소 가져오기

fun main() {
    
  val strings = listOf("first", "second", "third")
  println(strings.last()) // 리스트의 마지막 원소를 가져오기
    
}
  
출력 : third

리스트에서 데이터 필터링 및 정렬해서 출력하기

fun main() {
    
    val people = listOf("안드로이드스터디-이상목","안드로이드스터디-유호상", "코틀린개발자-김하니", "코틀린개발자-윤혜진")

    people 
    .filter { it.startsWith("안") }
    .sortedBy { it }
    .forEach { println(it) }  
}
 
출력 : 
안드로이드스터디-이상목
안드로이드스터디-유호상



코틀린 컬렉션 인터페이스 구조

  • 코틀린에서 Collection Interface는 다음과 같은 상속구조를 갖고 있다.
  • 모두 kotlin.collections 패키지 내부에 존재하며,
    Iterable 을 기본적으로 상속받는다.
  • 여기에서 중요한점은 가변/불변성으로 나누는 원칙을 충실히 지켰다는점인데,
    Mutable 키워드가 들어가면, 변경가능한 컬렉션이다!



불변 / 가변 Collection

코틀린은 변수 선언에서부터 불변과 가변에 아주 신경을 많이 썼었다.
컬렉션에서도 이러한 프로그래밍 원칙을 지키고 있다.


변경 불가능한 컬렉션 == immutable Collection

  • kotlin.collections.Collection
  • 내부 요소 변경 불가능
  • Read Only
  • 멀티스레드에서도 문제가 발생하지 않는다 (데이터의 안전성을 보장한다)

변경 가능한 컬렉션 == mutable Collection

  • kotlin.collections.MutableCollection
  • 내부 요소의 추가 수정 삭제가 가능하다.
  • Read & Write
  • 멀티 스레드 동시 접근시 동기화 문제가 발생할 수 있다.
  • Java.util.arrayList와 같이 자바컬렉션 클래스를 사용한다.

컬렉션 생성 방법

코틀린에서 컬렉션을 생성하는 방법은 굉장히 간단하다.
그냥 listOf("jieun", "hello") 이런식으로 메서드를 사용하면 된다.


자바 컬렉션 클래스의 대체 이름을 제공하는 클래스

  • TypeAliasesKt.class

  • 위의 코드를 보면 typealias 키워드를 통해 java.util.*에서 자바 컬렉션을 직접적으로 참조할수 있게 별칭을 부여한다

  • 코틀린에서 ArrayList를 쓸때마다 실제로는 java.util.ArrayList가 사용되는 것을 의미한다.



컬렉션 참조
https://jinn-blog.tistory.com/21

profile
기록은 기억을 지배한다.

0개의 댓글