[Kotlin] foreach 와 map 알고 쓰자

Kotlin으로 구현하다보면 foreach와 map은 실제로 같은 기능을 하는 것 같지만 깊게 이해하고 사용하면 상황에 따라 유용하여 사용할 수 있다. 이글에서는 두 문법에 관하여 정리해 보려고 한다.

◆foreach

이 문법은 단순히 모든 Collection 원소에 대하여 한번 순회하면서 처리하는 문법이다. 중간에 중단도 가능하고 결과 값을 만들어 내기도 하고 아닐 수도 있다. 즉 모든 처리가 가능 하다.

val list = listOf(
     Data("John", "Ali"), 
     Data("Naidu", "Tan"), 
     Data("Evgenii", "Dmitry"))
list.foreach{
    if(it.firstName=="Naidu"){
        println("This is Naidu")
        break
    }
}

◆map

map은 모든 원소을 순회하면서 결과값을 반환한다. 즉 모든 원소를 순환하는 목적이 다른 무언가를 하기 위함이다. 원래 Collection이 아닌 다른 Collection으를 만든다. 이 떄문에 map을 보통 두 Collection를 transform 하기위해 사용한다.

val list = listOf(
        Data("John", "Ali",30),
        Data("Naidu", "Tan",32),
        Data("Evgenii", "Dmitry",32))
val newList =list.map{ it.age +=1}

◆결론

단순히 모든 원소에 대하여 어떤 처리를 하거나 특정 조건에서 loop를 중단하고 결과 값이 필요 없으면 foreach를 선택, loop의 결과를 다른 Collection으로 반환 받고 싶으면 map을 선택하는 것이 좋다.

 

https://stackoverflow.com/questions/354909/is-there-a-difference-between-foreach-and-map