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 次 |
| 最近记录: |