import java.util.List;
import java.util.stream.Collectors;

public class LipatVsTampung {

    public static void main(String[] args) {
        List<String> item = List.of("Kopi", "Teh", "Roti", "Madu");

        // reduce: tiap penggabungan menghasilkan String BARU (immutable)
        String viaReduce = item.stream()
                .reduce("", (a, b) -> a + b);
        System.out.println("reduce  : " + viaReduce);

        // collect bersama joining: container diisi bertahap
        String viaCollect = item.stream()
                .collect(Collectors.joining());
        System.out.println("collect : " + viaCollect);

        // collect bentuk paling mentah: supplier + accumulator + combiner
        StringBuilder builder = item.stream()
                .collect(StringBuilder::new,
                        (sb, s) -> sb.append(s),
                        (sbLain, sbBerikut) -> sbLain.append(sbBerikut));
        System.out.println("builder : " + builder);
    }
}
