Java 8 Lambda按列表过滤

Java 8 Lambda按列表过滤,第1张

Java 8 Lambda按列表过滤
Predicate<Client> hasSameNameAsoneUser =     c -> users.stream().anyMatch(u -> u.getName().equals(c.getName()));return clients.stream()   .filter(hasSameNameAsOneUser)   .collect(Collectors.toList());

但这效率很低,因为它是O(m * n)。您最好创建一组可接受的名称

Set<String> acceptableNames =     users.stream()         .map(User::getName)         .collect(Collectors.toSet());return clients.stream()   .filter(c -> acceptableNames.contains(c.getName()))   .collect(Collectors.toList());

还要注意,它并不严格等同于您拥有的代码(如果已编译),如果有多个用户具有与该客户端相同的名称,则该客户端会将同一客户端两次添加到列表中。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5131409.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-17
下一篇2022-11-17

发表评论

登录后才能评论

评论列表(0条)

    保存