java stream
stream用于处理集合数据。创建stream:
static void testStream() {// 从集合创建List<String> list = Arrays.asList("代号9527", "南海神尼", "古德毛宁", "西方失败");Stream<String> stream1 = list.stream();stream1.forEach(System.out::println); // 利用方法引用调用printlnSystem.out.println("================================");// 从数组创建String[] array = {"龙姑娘", "尹志平", "过儿"};Stream<String> stream2 = Arrays.stream(array);stream2.forEach(System.out::println);System.out.println("================================");// 直接使用静态方法Stream<String> stream3 = Stream.of("灭绝师太", "周芷若", "如霜姑娘");stream3.forEach(System.out::println);System.out.println("================================");// 生成无限流(需限制长度)Stream<Integer> stream4 = Stream.iterate(0, n -> n + 1).limit(10);stream4.forEach(System.out::println);System.out.println("================================");// 并行流(自动多线程处理)Stream<String> parallelStream = list.parallelStream();parallelStream.forEach(System.out::println);}
打印:
综合用法:
static void testStream2() {List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);// 过滤偶数 -> 平方 -> 收集到列表List<Integer> result = numbers.stream().filter(n -> n % 2 == 0).map(n -> n * n).collect(Collectors.toList()); // [4, 16, 36]// 统计所有偶数的和int sum = numbers.stream().filter(n -> n % 2 == 0).mapToInt(Integer::intValue).sum(); // 12// 查找第一个大于3的元素Optional<Integer> first = numbers.stream().filter(n -> n > 3).findFirst(); // Optional[4]}