如果一次性操作需要找到其getName()是特定值的对象,那么可能就没有什么魔术了:遍历列表,在每个对象上调用getName(),对于那些匹配项,将它们添加到您的结果列表中。
如果getName()是一项昂贵的操作,并且如果给定对象肯定不会返回匹配值,则还有其他先验方法,那么很显然,您可以在循环过程中构建此“过滤器”。
如果您经常需要获取给定getName()的对象,则保留[getName()-> object-> match
list的结果]的索引(例如,在HashMap中)。您需要确定如何以及是否需要使此“索引”与实际列表保持同步。
另请参见另一个命题,以使用binarySearch()但保持列表不变。这样,插入比使用映射和未排序列表要贵,但是如果插入与查找相比不常见,那么它的优点是只需要维护一个结构。



