在Java中迭代HashSet的最佳方法

时间:2018-11-16 13:52:54

标签: java collections hashset

我习惯于使用PHP进行编程,现在学习Java,整个Collections API对我来说都是全新的东西。

我进行了搜索并了解了一些遍历HashSet的方法,例如使用:

  • Java 8 forEach和lambda表达式。
  • iterator()。
  • iterator()和Java 8 forEachRemaining()方法。
  • 简单的for-each循环。

Source和许多其他在互联网上很容易找到的

但是最好的迭代方式是什么,或者两者之间的区别是什么,比如我应该在不同的情况下使用哪种方式。

2 个答案:

答案 0 :(得分:4)

每个都有其自身的优点和缺点。在set本身上使用iterator()和Java 8 forEachRemaining()方法与简单的forEach()并没有真正的区别,但是还需要调用另一种方法。

如果要在集合中的每一部分上调用一个简单的方法,则在带有lambda表达式的Set上使用forEach()很棒。

for(T项目:someSet){}如果您对每件东西都做很多事情,或者您对它们所做的事情有副作用,那会更干净。

如果没有副作用,但是假设您要在集合中搜索特定属性或一组特定属性,我建议您使用Stream API,您可以在其中进行filter(),map( ),查找或收集到其他类型的集合。

无论您使用什么,主要取决于您个人所需要的。不同的方法在实现上可能确实有所不同,但是大多数时候它们可以做相同的事情。主要取决于团队中的品味或标准

答案 1 :(得分:0)

如果将很多对象放入 Collection 并希望进行迭代,则应考虑使用 List 接口,因为对于来说,Big-O迭代速度更快在这种情况下列出。谈论 HashSet 时,它仅取决于您的代码样式和要在 HashSet

中的元素上执行的任务。