Abd*_*UMI 30 java arrays lambda java-8
请考虑以下代码:
List<Locale> locales = Arrays.asList(
new Locale("en", "US"),
new Locale("ar"),
new Locale("en", "GB")
);
locales.stream().filter(l -> l.getLanguage() == "en");
Run Code Online (Sandbox Code Playgroud)
我如何获得的大小locales
ArrayList
后申请filter
的,因为locales.size()
给我的尺寸前申请filter
?
Ale*_* C. 44
从列表中获取流时,它不会修改列表.如果要在过滤后获取流的大小,请调用count()
它.
long sizeAfterFilter =
locales.stream().filter(l -> l.getLanguage().equals("en")).count();
Run Code Online (Sandbox Code Playgroud)
如果要获取新列表,只需调用.collect(toList())
生成的流即可.如果你不担心的地方修改列表,你可以简单地使用removeIf
上List
.
locales.removeIf(l -> !l.getLanguage().equals("en"));
Run Code Online (Sandbox Code Playgroud)
请注意,Arrays.asList
它会返回一个固定大小的列表,因此它会抛出异常,但您可以将其包装在一个ArrayList
,或者只是使用(resp.)在List
(resp.ArrayList
)中收集过滤流的内容.Collectors.toList()
Collectors.toCollection(ArrayList::new)
Boh*_*ian 13
使用count()
方法:
long matches = locales.stream()
.filter(l -> l.getLanguage() == "en")
.count();
Run Code Online (Sandbox Code Playgroud)
请注意,您正在使用比较字符串==
.喜欢使用.equals()
.虽然==
在比较实习字符串时会起作用,否则会失败.
仅供参考,它只能使用方法参考编码:
long matches = locales.stream()
.map(Locale::getLanguage)
.filter("en"::equals)
.count();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
37577 次 |
最近记录: |