title: Equivalent of Scala's foldLeft in Java 8
body: <p>What is the equivalent of of Scala's great <code>foldLeft</code> in Java 8?</p>
  
  <p>I was tempted to think it was <code>reduce</code>, but reduce has to return something of identical type to what it reduces on. </p>
  
  <p>Example:</p>
  
  <pre><code>import java.util.List;
  
  public class Foo {
  
      // this method works pretty well
      public int sum(List&lt;Integer&gt; numbers) {
          return numbers.stream()
                        .reduce(0, (acc, n) -&gt; (acc + n));
      }
  
      // this method makes the file not compile
      public String concatenate(List&lt;Character&gt; chars) {
          return chars.stream()
                      .reduce(new StringBuilder(""), (acc, c) -&gt; acc.append(c)).toString();
      }
  }
  </code></pre>
  
  <p>The problem in the code above is the <code>acc</code>umulator: <code>new StringBuilder("")</code></p>
  
  <p>Thus, could anyone point me to the proper equivalent of the <code>foldLeft</code>/fix my code?</p>