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)
有一个更好的方法吗?
这个怎么样:
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)