java - 在 Java 中迭代 HashSet 的最佳方法

标签 java collections hashset

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

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

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

Source以及许多其他在互联网上很容易找到的内容。

但是迭代它的最佳方法是什么,或者它们之间有什么区别,比如我应该在不同的场景中使用哪一个。

最佳答案

每个都有自己的优点和缺点。使用 iterator() 和 Java 8 forEachRemaining() 方法与 Set 本身的简单 forEach() 并没有真正的不同,但需要调用一个方法。

如果您希望对集合中的每一 block 都调用一个简单的方法,那么在集合上使用带有 lambda 表达式的 forEach() 非常好。

如果你对每个部分做很多事情,或者你对它们做的事情有副作用,那么 for(T item: someSet) {} 会更干净。

如果没有副作用,但假设您想在集合中搜索特定属性或一组特定属性,我建议使用 Stream API,您可以在其中过滤 ()、映射 ( )、查找或收集到其他类型的集合。

无论您使用什么,主要取决于对您个人有吸引力的东西。不同的方式在实现上可能真的不同,但它们大多数时候可以做同样的事情。这主要归结为团队中的品味或标准

关于java - 在 Java 中迭代 HashSet 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53339212/

相关文章:

java - Java 中的 Set 不允许重复,但它接受具有相同参数的 StringBuffer 对象。为什么?

java - 使用 it.next() 返回元素和直接在 sysout 中打印哈希集的对象有什么区别

java - 创建用于定义常量的类

Java - 将字符串转换为 DES key

java - 用于在集合中递归存储类对象的数据结构java

c# - 返回两个数字中较大数字的最简单方法是什么?

c# - 克隆/深度复制 .NET 泛型 Dictionary<string, T> 的最佳方法是什么?

java - 想要从我的文件中读取唯一编号|错误 - java.lang.NullPointerException

java - 使用 ViewPager2 在 AlertDialog 中自定义 TabLayout

java - 使用 Java 将 MySql 表复制到 Sqlite