title: Guava one-liner for transforming immutable lists
body: <p>I think there must be a one-liner Guava solution for transforming an immutable list into another immutable list, but I can't find it. Suppose we have the following objects:</p>
  
  <pre><code>ImmutableList&lt;String&gt; input = ImmutableList.of("a", "b", "c");
  Function&lt;String, String&gt; function = new Function&lt;String, String&gt;() {
      @Override
      public String apply(String input) {
          return input + input;
      }
  };
  </code></pre>
  
  <p>The transformation can be achieved like this:</p>
  
  <pre><code>Iterable&lt;String&gt; transformedIt = Iterables.transform(input, function);
  ImmutableList&lt;String&gt; output = ImmutableList.&lt;String&gt;builder().addAll(transformedIt).build();
  </code></pre>
  
  <p>or like this:</p>
  
  <pre><code>List&lt;String&gt; transformedList = Lists.transform(input, function);
  ImmutableList&lt;String&gt; output2 = ImmutableList.copyOf(transformedList);
  </code></pre>
  
  <p>but I think that there must be somewhere a performance-optimized one-liner for this kind of transformation, without intermediate objects, I just can't find it. Where is it?</p>