Develop/Kotlin

[Kotlin] flatten 함수 : 중첩된 컬렉션을 간편하게 평탄화

DevPi 2024. 8. 25. 15:30
반응형

Kotlin은 개발자가 데이터를 처리하는 데 있어 다양한 유틸리티 함수를 제공합니다. 그중에서도 flatten 함수는 중첩된 컬렉션을 단일 차원으로 평탄화할 때 매우 유용합니다. 이번 포스팅에서는 flatten 함수의 기본 개념과 사용법, 그리고 중복된 값을 처리하는 방법에 대해 알아보겠습니다.


flatten 함수란?

flatten 함수는 다차원(중첩) 컬렉션을 단일 차원의 컬렉션으로 평탄화하는 데 사용됩니다. 예를 들어, List<List<T>>와 같이 중첩된 리스트를 List<T>로 변환할 수 있습니다. 이 함수는 중첩된 구조에서 데이터를 단순화할 때 매우 유용합니다.

 

1. 간단한 예시

다음은 flatten 함수를 사용한 간단한 예시입니다.

val nestedList = listOf(
    listOf(1, 2, 3),
    listOf(4, 5, 6),
    listOf(7, 8, 9)
)

val flattenedList = nestedList.flatten()

println(flattenedList)  // 출력: [1, 2, 3, 4, 5, 6, 7, 8, 9]

위 코드에서 flatten 함수는 List<List<Int>> 타입의 중첩 리스트를 List<Int> 타입의 평탄화된 리스트로 변환합니다.

 

2. 중복된 값이 있는 경우

flatten 함수는 중복된 값을 제거하지 않고, 원본 컬렉션에 있는 모든 요소를 그대로 평탄화합니다. 만약 중복된 값이 존재한다면, 평탄화된 리스트에도 그대로 포함됩니다.

val nestedListWithDuplicates = listOf(
    listOf(1, 2, 3),
    listOf(3, 4, 5),
    listOf(5, 6, 1)
)

val flattenedList = nestedListWithDuplicates.flatten()

println(flattenedList)  // 출력: [1, 2, 3, 3, 4, 5, 5, 6, 1]

위 예제에서 flatten 함수는 중복된 값이 포함된 리스트를 평탄화합니다. 그 결과, 중복된 값 3, 5, 1이 제거되지 않고 그대로 포함된 것을 볼 수 있습니다.

 

3. 중복된 값을 제거하는 방법

때로는 중복된 값을 제거하고 고유한 값만 포함된 리스트가 필요할 수 있습니다. 이 경우 flatten 함수와 함께 distinct 함수를 사용할 수 있습니다. distinct 함수는 리스트에서 중복된 요소를 제거하고 유일한 값만 남겨줍니다.

val distinctFlattenedList = nestedListWithDuplicates.flatten().distinct()

println(distinctFlattenedList)  // 출력: [1, 2, 3, 4, 5, 6]

distinct 함수를 사용하면 중복된 값을 제거한 결과를 얻을 수 있습니다. 이 예제에서는 [1, 2, 3, 4, 5, 6]이 출력되며, 중복된 값들이 모두 제거되었습니다.


요약

  • flatten 함수는 중첩된 컬렉션을 단일 차원으로 평탄화하는 데 사용됩니다. 이를 통해 복잡한 중첩 구조를 간단하게 다룰 수 있습니다.
  • 중복된 값이 있는 경우, flatten 함수는 이를 제거하지 않고 그대로 포함합니다.
  • 중복된 값을 제거하려면, flatten 함수와 함께 distinct 함수를 사용하여 유일한 값만 포함된 리스트를 만들 수 있습니다.

flatten 함수는 특히 복잡한 중첩 구조에서 간단하게 데이터를 처리하고자 할 때 매우 유용한 도구입니다. 이를 통해 Kotlin에서 데이터를 더욱 쉽게 다룰 수 있습니다. 이번 포스팅이 flatten 함수의 기본 개념과 활용 방법을 이해하는 데 도움이 되었기를 바랍니다.

반응형