如何通过函数式编程计算 Java 中的元音?

Bob*_*Rob 7 java functional-programming functional-java map-function

我需要计算 Functional Java 中单词列表中元音的数量。如果我有这个清单:

List<String> l = Arrays.asList("hello", "world", "test");
Run Code Online (Sandbox Code Playgroud)

我的想法是“删除”元音,然后以这种方式进行减法:

int tot = l.stream().map(s -> s.replace("a", "")).
            map(s -> s.replace("e", "")).
            map(s -> s.replace("i", "")).
            map(s -> s.replace("o", "")).
            map(s -> s.replace("u", "")).
            map(s -> s.length()).reduce(0, Integer::sum);
int res = l.stream().map(s->s.length()).reduce(0, Integer::sum)-tot;
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

cam*_*024 4

这个怎么样:

List<String> vowels = Arrays.asList("a", "e", "i", "o", "u");

int count Arrays.stream(string.split(""))  // generate stream from an String[] of single character strings
    .filter(vowels::contains)  // remove all non-vowels
    .count();  // count the elements remaining
Run Code Online (Sandbox Code Playgroud)