title: IntStream.range().filter.mapToObj().collect what exactly the means
body: <p>I am new to Java and stuck while reading these particular lines of code:</p>
  <pre><code>private static void checkPrice(final List&lt;String&gt; prices) {
      List&lt;String&gt; inputCountryCodes = IntStream.range(0, prices.size())
              .filter(index -&gt; (index % 2 == 0))
              .mapToObj(prices::get)
              .collect(Collectors.toList());
  
      List&lt;String&gt; distinctInputCountryCodes = inputCountryCodes.stream()
              .distinct()
              .collect(Collectors.toList());
  }
  </code></pre>
  <p>Can anyone please explain the para1 and para2 of the code above what these particular lines of code do here?</p>