【发布时间】:2015-04-10 22:51:00
【问题描述】:
在 java 8 中,您现在可以对列表使用过滤器,以根据您提供的 Predicate 获取另一个列表。
所以可以说我有像这样的正常 for 循环逻辑
for(Person p : personList){
if(p.getName().Equals("John")){
//do something with this person
}
}
现在使用这样的过滤器
List<Person> johnList = personList.stream()
.filter(p -> p.getName().Equals("John"))
.collect(Collectors.toList());
for(Person john : johnList){
//do something with this person
}
似乎使用过滤器会比仅使用常规 for 循环导致更多开销,因为它不仅第一次循环遍历整个列表,而且您必须循环遍历过滤后的列表并使用过滤后的内容执行您想要的操作列表。
我对它的工作原理有误吗?
【问题讨论】:
-
如有疑问,请进行基准测试。
标签: java list java-stream