gpt4 book ai didi

java - .removeIf() 与 .filter().collect()

转载 作者:行者123 更新时间:2023-11-30 01:46:08 24 4
gpt4 key购买 nike

我需要一个方法,它通过检查元素的字段是否包含在另一个集合的元素的字段中来过滤出集合。哪种方式更好:

一个方法,返回过滤后的集合:

List method1(List foo, List bar){
if(bar.isEmpty())
return Collections.emptyList();
Set<Integer> ids = bar.stream().map(elem->elem.getId).collect(Collectors.toSet());
return foo.stream().filter(elem->ids.contains(elem.barId));
}
  • 轻松处理空条件集合
  • 创建流和另一个集合

或者一个方法,修改原始集合:

void method2(List foo, List bar){
if(bar.isEmpty()){
foo.clear();
return;
}
Set<Integer> ids = bar.stream().map(elem->elem.getId).collect(Collectors.toSet());
foo.removeIf(elem->ids.contains(elem.barId));
}
  • 没有多余的对象
  • 清除原始集合而不是仅返回新集合

最佳答案

第一种方法恕我直言更好。现实生活中的参数概念很难维护。

关于java - .removeIf() 与 .filter().collect(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57885833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com