package cn.bunny.stream; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.concurrent.ThreadLocalRandom; import java.util.stream.Stream; public class StreamExample02 { public static void main(String[] args) { Stream stream = new ArrayList<>() {{ add(1); add(2); add(2); add(3); add(3); add(4); }}.stream(); // 去重操作 stream.distinct().forEach(System.out::println); stream = new ArrayList<>() {{ add(1); add(2); add(2); add(3); add(3); add(4); }}.stream(); // 过滤器,满足值为2的筛选 stream.filter(x -> x.equals(2)).forEach(System.out::println); stream = new ArrayList<>() {{ add(1); add(2); add(2); add(3); add(3); add(4); }}.stream(); // 选择序列个数为3 stream.limit(3).forEach(System.out::println); stream = new ArrayList<>() {{ add(1); add(2); add(2); add(3); add(3); add(4); }}.stream(); // 映射,可以修改原本的类型 stream.map(Object::toString).forEach(System.out::println); stream = new ArrayList<>() {{ add(1); add(2); add(2); add(3); add(3); add(4); }}.stream(); // 跳过前两个数 stream.skip(2).forEach(System.out::println); stream = new ArrayList<>() {{ add(1); add(2); add(2); add(3); add(3); add(4); }}.stream(); // 不会使元素数据、类型产生改变 stream.peek(x -> ThreadLocalRandom.current().nextInt(100)).limit(10).forEach(System.out::println); stream = new ArrayList<>() {{ add(1); add(2); add(2); add(3); add(3); add(4); }}.stream(); // 从小到大排序 stream.sorted().forEach(System.out::println); // 提供重载方法 // stream.sorted(Comparator.comparing(Object::toString)).forEach(System.out::println); ArrayList list = new ArrayList<>() {{ add(1); add(2); add(2); add(3); add(3); add(4); }}; List> arrayListList = List.of(list); // 扁平化数组 arrayListList.stream().flatMap(Collection::stream).forEach(System.out::println); } }