computer_study

[Kotlin] 07. 컬렉션과 I/O 자세히 알아보기 본문

스터디/코틀린 완벽 가이드

[Kotlin] 07. 컬렉션과 I/O 자세히 알아보기

knowable 2022. 6. 3. 02:06

1. 컬렉션

엘리먼트들로 이뤄진 그룹을 저장하기 위해 설계된 객체

코틀린에는 여러 컬렉션과 그 안의 여러 가지 데이터 구조를 조작하는 다양한 API들이 있다.

  • Iterator 타입은 기본적으로 자바와 동일. (remove()는 MutableIterator로 옮겨져있다.)
  • kotlin.collections 패키지에 있는 별명을 통해 대부분의 표준 컬렉션을 쓸 수 있다 (java.util 패키지 클래스를 사용할 필요가 없다.)

컬렉션 생성

  • emptyList()/emptySet() - 불변인 빈 리스트/집합 인스턴스 생성
  • listOf()/setOf() - 인자로 제공한 배열에 기반한 불변 인스턴스 생성
  • listOfNotNull() - Null이 아닌 값으로 이루어진 불변 리스트
  • mutableListOf()/ mutableSetOf() - 가변 리스트/집합
  • arrayListOf() - arraylist 생성
  • hashSetOf()/LinkedSetOf()/sortedSetOf() - HashSet/LinkedHashSet/TreeSet의 새 인스턴스 생성
  • emptyMap() - 빈 불변의 맵
  • mapOf() - 새 불변 맵
  • mutableMapOf() - 가변 맵의 디폴트 구현 인스턴스
  • hashMapOf()/linkedMapOf()/sortedMapOf() - HashMap/LinkedHashMap/TreeMap의 새 인스턴스 생성
  • yield() - 원소를 하나 시퀀스에 추가
  • yieldAll() - 지정한 이터레이터, 이터러블, 시퀀스에 들어있는 모든 원소를 시퀀스에 추가

 

 

2. 파일과 I/O 스트림

use()함수

  • 인자로 전달받은 람다를 실행하고 람다의 결과를 돌려준다(예외 발생에 상관없이 정리 후 실행해준다)
// kotlin
val lines = FileReader("data.bin").use{it.readLines()}

// Java
val reader = FileReader("data.bin")

val lines = try{
    reader.readLines()
}finally{
    reader.close()
}

파일 콘텐츠 접근

코틀린 표준 라이브러리는 명시적으로 I/O 스트림을 쓰지 않고도 파일 콘텐츠를 읽을 수 있는 함수를 제공한다.

  • readText() - 파일 콘텐츠 전부를 한 문자열로 읽어온다.
  • readLines() - 파일 컨텐츠 전부를 줄 구분 문자를 사용해 줄 단위로 나눠 읽어서 문자열의 리스트를 반환한다.
  • writeText() - 파일 콘텐츠를 주어진 문자열로 설정한다.(필요하면 파일을 덮어 쓴다)
  • appendText() - 주어진 문자열을 파일의 콘텐츠 뒤에 추가한다.

파일 시스템 유틸리티

코틀린은 파일 복사, 삭제, 디렉터리 계층 구조 순회 등도 라이브러리에서 쉽게 해준다.

 

 

Comments