Java的Stream API

首先

大家好,你们都在用Java吗!最近我写的东西很多,但是自从实现了Stream API之后,感觉变得非常方便。
虽然我能迅速想到Stream.forEach和Stream.filter这样的常见用法,
但也有一些不常用的用法我想不起来,所以我打算留下备忘录。

流生成

创建一个无序的无限流。
这在生成随机数等无关紧要值时非常方便。

文件:文档

代码

    public static void main(String[] args) {
        Stream<Double> stream = Stream.generate(() -> Math.random());
        stream.limit(5).forEach(System.out::println);
    }

结果 (jié guǒ)

0.022804976867977667
0.06422820749702451
0.7240936837411123
0.9070898332933144
0.6724389714182997

流.anyMatch

如果有一个谓词(Predicate)作为参数,只要存在一个符合条件的值,就会返回true。

文件:文档

代碼

    public static void main(String[] args) {
        List<String> strList = Arrays.asList("dog", "cat", "bird");
        boolean match = strList.stream().anyMatch(e -> e.equals("dog"));
        System.out.println(match);
    }

结果 (jié guǒ)

true

Stream.allMatch 检查流中的所有元素是否都满足给定的条件。

如果所有条件匹配,那么将 Predicate 作为参数的值返回为 true。

文件:文档

代码 (Mandarin Chinese translation)

    public static void main(String[] args) {
        List<String> strList = Arrays.asList("dog", "cat", "bird");
        boolean match = strList.stream().allMatch(e -> e.equals("dog"));
        System.out.println(match);
    }

结局

false

Stream.noneMatch – 流.noneMatch

如果没有符合条件的值,将 Predicate 作为参数,返回 true。

文件:文档

翻译成中文:
程式码

    public static void main(String[] args) {
        List<String> strList = Arrays.asList("dog", "cat", "bird");
        boolean match = strList.stream().noneMatch(e -> e.equals("fish"));
        System.out.println(match);
    }

结果 (jié guǒ)

true

流.取前N个

作为参数传入 Predicate,返回符合条件的值,例如下例中返回小于0的数字。

文件:文档

代码 mǎ)

    public static void main(String[] args) {
        List<Integer> numList = Arrays.asList(
                -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5
        );
        numList.stream().takeWhile(x -> x < 0).forEach(System.out::println);
    }

结果 (jié guǒ) – result

-5
-4
-3
-2
-1

流.丢弃当 (liú.

将 Predicate 作为参数,返回不满足条件的值。
以下示例中将返回大于等于0的数字。

文件:文档

题目要求将”コード”以中文母语方式进行改写。

    public static void main(String[] args) {
        List<Integer> numList = Arrays.asList(
                -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5
        );
        numList.stream().dropWhile(x -> x < 0).forEach(System.out::println);
    }

结果

0
1
2
3
4
5

最後,最后的

StreamAPI非常方便,是吧。
我们应该积极使用它,朝着能够直观理解的代码目标前进。
虽然简短,但就是这样了。非常感谢!

广告
将在 10 秒后关闭
bannerAds