Java,映射一个列表,并在一行中进行包含检查或遍历整个列表吗?

迪茨(M.Dietz):

我有一个雇员名单。每个员工都有一个唯一的标识符id我有一个employeeId,必须检查列表中是否包含代表的员工employeeid我可以考虑采用两种方法,其中哪一种更好。有性能差异吗?

1)

if (employees.stream().map(Employee::getId).collect(Collectors.toList()).contains(employeeId)) {
  // do something
}

2)

boolean employeeIsInsideTheList = false;
 for (Employee employee : employees) {
   if (employee.getId() == employeeId) {
      employeeIsInsideTheList = true;
    }
 }
if(employeeIsInsideTheList) {
  // do something
}
他们是 :

您的Stream版本Stream无法达到s 的目的,因为它没有利用延迟评估和短路的优势。您要进行两次完整的迭代-第一次将ListEmployees转换List为ID的形式,第二次在ID的形式中搜索特定ListID(通过contains()方法)。

更好的解决方案是在不构建ID的情况下搜索匹配List的ID:

if (employees.stream().anyMatch(e -> e.getId().equals(employeeId)))) {
  // do something
}

您的for循环溶液可以通过一次匹配标识符被发现循环的爆发可以类似地得到改善。

改进后,如果性能List相对较小,则是否存在性能差异是没有意义的我希望使用Streams版本,该版本更短并且可读性更好。

如果List很大,而性能是一个问题,建议您对两种解决方案的性能进行衡量,以找出哪种解决方案更快。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

遍历表行列表,直到一行包含特定字符串?

Python基本版–一行包含列表,“ for”和“ if”

如何在 java 或 kotlin 中的一行中映射一个数组列表?

遍历包含另一个列表的列表,包含另一个列表的等

Java流-如何遍历列表,显示要素并在同一行中收集它们

复制列表并在一行中设置一个元素?

如果一行包含一个单词,则返回字符之间的文本“

将第一行包含一个的那些列设置零

我如何遍历包含字典的列表,必须对一个键的值进行迭代

熊猫:每行包含一个字符串,以逗号分隔,并在列表中添加唯一的单词

创建一个包含文件每一行的列表

如何制作一个包含元素的列表作为python中输入的每一行

React-Material UI表在每一行中包含一个下拉列表

遍历包含一个键值对的字典列表

映射一个包含列表的对象以列出 myDto 对象

gwt RequestFactory映射包含一个列表

如何初始化一个列表并在一行中用另一个列表扩展它?

按字段对对象列表进行分组并在其中一个字段中应用二元函数以使用流 java 8 在一行代码中按总和减少它

检查一个列表是否包含另一个列表的元素

检查一个列表是否包含另一个列表中的元素

检查一个列表项是否包含在另一个列表中

如何检查一个列表是否包含另一个列表C#

遍历数组列表jQuery,然后在对象属性中进行一些更改。更改后创建一个新的数组列表

检查至少一个列表是否包含特定元素

从一行中分割字符串并在python 3中追加一个列表

如果组中的任何一行包含某个值,则创建一个新列并分配值

如何遍历列表的元组列表,并在python中一个接一个地获取所有元素?

如何使用kusto创建一个表,该表在一行中提供服务器列表并在另一行中提供它的计数

检查一个列表是否包含另一个列表的一个或多个值