Explain the difference between 'filter' and 'map' functions in Kotlin.

In Kotlin, the `filter` and `map` functions are both higher-order functions used for transforming and manipulating collections. However, they have distinct purposes and behaviors. Here's an explanation of the difference between `filter` and `map`:

1. `filter` Function :
   * The `filter` function is used to filter elements from a collection based on a given predicate (a lambda expression that returns a Boolean value).
   * It returns a new collection that contains only the elements for which the predicate evaluates to `true`.
   * The original collection remains unchanged.
   Example :
     val numbers = listOf(1, 2, 3, 4, 5)
     val filtered = numbers.filter { it % 2 == 0 } // Keep only even numbers
     // filtered: [2, 4]​


2. `map` Function :
   * The `map` function is used to transform each element in a collection by applying a transformation function (a lambda expression) to each element.
   * It returns a new collection that contains the transformed elements.
   * The original collection remains unchanged.
   Example :
     val numbers = listOf(1, 2, 3, 4, 5)
     val mapped = numbers.map { it * it } // Square each number
     // mapped: [1, 4, 9, 16, 25]​
In the key differences between `filter` and `map` are:

* `filter` is used to select or filter elements from a collection based on a predicate, returning a new collection with only the matching elements.
* `map` is used to transform each element in a collection by applying a transformation function, returning a new collection with the transformed elements.

While `filter` allows you to select elements that meet certain conditions, `map` enables you to transform each element into something else. Both functions are valuable for working with collections and can often be used together in combination to achieve the desired result.