我想知道什么更快:按字段过滤自定义对象,然后按其字段映射,反之亦然(先映射,然后过滤)。
最后,我通常希望将映射的字段收集到某个Collection中。
例如,最简单的Person类:
Contact
现在让我们来一个public class Person {
String uuid;
String name;
String secondName;
}
。
List<Person> persons
答案 0 :(得分:6)
在此特定示例中,调用Person.getName()
基本上没有花费,这没关系,您应该使用可读性最高的内容(并且之后的过滤甚至可能会稍快一些,因为TJ提到,映射操作是过滤操作的一部分。
但是,如果映射操作成本很高,则首先过滤(如果可能)会更有效,因为流不必映射已过滤出的元素。
让我们举一个人为的例子:您有一个ID流,对于流中的每个偶数ID,您都必须执行http GET请求或数据库查询以获取由该ID标识的商品的详细信息(并且因此将ID映射到详细对象)。
假定流由一半的偶数ID和一半的奇数ID组成,并且每个请求花费相同的时间,则可以通过首先过滤将时间除以2。如果每个HTTP请求都花费1秒,并且您有60个ID,则通过首先过滤,您就可以从60秒变到30秒来完成同一任务,而且还可以减少网络和外部http API的费用。
答案 1 :(得分:1)