如何在 Java 中迭代 HashSet?
Java HashSet 类在内部使用哈希表来实现 Set 接口,该接口使用 HashMap 实例。该类不保证项目会随着时间的推移保持不变,因为哈希集内的因子的迭代顺序并不总是有保证的。
此类中可以包含空元素。哈希函数为添加、删除、包含和大小等基本操作提供高效的性能,前提是它有效地通过存储桶分配元素。
Set 接口由 HashSet 实现,它扩展了 AbstractSet。它使用哈希技术创建集合并将其数据保存在哈希表中。哈希处理是从键中的数据生成唯一值(称为键的哈希码)的过程。
使用的方法
可以使用以下三种方法之一对 HashSet 进行迭代 -
使用迭代器
不要使用迭代器,而是使用 for 循环。
使用 for-each 循环
方法 1:使用迭代器
在此方法中,我们使用迭代器对 HashSet 进行迭代。首先,我们使用 Java 中的 iterator() 方法创建一个迭代器,该方法是专门为 HashSet 设计的。
语法
Iterator<Integer> it = set.iterator();
接下来,我们使用 Java 的 hasNext() 和 next() 方法遍历 HashSet。next() 方法允许我们检索存储在 HashSet 中的数据,而 hasNext() 方法确定 HashSet 是否包含任何其他组件。
请注意,此方法可用于迭代和操作 HashSet 的因素。
set.add()
以下代码使用 HashSet 来存储字符串集合。然后,它使用迭代器遍历 HashSet 并打印每个字符串值。
算法
步骤 1 - 创建一个名为 set 的 HashSet 对象。
步骤 2 - 将字符串"Java"、"PHP"、"Ruby"和"Python"添加到 set 对象。
步骤 3 - 为 set 对象创建一个名为 itr 的 Iterator 对象。
步骤 4 - 在迭代 itr 对象时,使用 while 循环打印每个元素。
示例
import java.util.*;
public class HashSetIteratorInstance {
public static void main(String[] args) {
HashSet<String> set=new HashSet<String>();
set.add("Java");
set.add("PHP");
set.add("Ruby");
set.add("Python");
//遍历元素
Iterator<String> itr=set.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
}
}
输出
Java PHP Ruby Python
方法 2:使用 for 循环
要使用改进的 for 循环遍历 Set,无需采取特殊步骤;只需按照循环构造的指示使用 Set。
for()
代码创建一个 HashSet 对象并为其提供字符串。然后,它利用 for 循环遍历 HashSet 对象并打印每个元素。
算法
步骤 1 - 创建"TLP"类。
步骤 2 - 创建一个名为 set 的 HashSet 对象。
步骤 3 - 将字符串"Welcome"、"Tutorialspoint"、"CSE"、"Students"、"for"和"Students"添加到 set 对象。
步骤 4 - 打印消息"使用 for 循环迭代 HashSet:"。
步骤 5 - 使用 for 循环遍历 set 对象并打印每个元素。
示例
// Java 程序借助 for 循环迭代 HashSet
import java.util.*;
public class TLP {
public static void main(String[] args){
HashSet<String> set = new HashSet<>();
// 将数据添加到 HashSet
set.add("Welcome");
set.add("Tutorialspoint");
set.add("CSE");
set.add("Students");
set.add("for");
set.add("Students");
System.out.println("Iterate HashSet with the help of for loop : ");
for (String ele : set) {
System.out.print(ele + " ");
}
}
}
输出
Iterate HashSet using for loop : CSE Students for Welcome Tutorialspoint
方法三:使用 for each 循环
只有 Java 8 及以上版本支持此功能。由于 Set 实现了 Iterable 接口,因此您可以使用其 forEach() 函数来遍历 Set。
forEach()
代码创建一个 HashSet,向其中添加多个编程语言名称,然后使用 for-each 循环打印 HashSet 中的每个元素。
算法
步骤 1 - 导入 java.util 包。
步骤 2 - 创建一个 HashSet 对象 - "hashset"。
步骤 3 - 现在您必须将以下字符串添加到 hashset 对象:"Java"、"Python"、"C sharp"、"PHP"和"Ruby"。
步骤 4 - 打印以下消息:"HashSet 包含的:"。
步骤 5 - 使用 for 循环遍历 hashset 对象并打印每个字符串。
示例
import java.util.*;
public class HashSetIteratorInstance {
public static void main(String args[]) {
// 声明一个 HashSet
HashSet<String> hashset = new HashSet<String>();
// 将元素添加到 HashSet
hashset.add("Java");
hashset.add("Python");
hashset.add("C sharp");
hashset.add("PHP");
hashset.add("Ruby");
System.out.println("HashSet 由 :" 组成);
// 使用 for each 循环
for(String str : hashset){
System.out.println(str);
}
}
}
输出
HashSet consists of : Java PHP C sharp Ruby Python
结论
我们讨论了在 Java 中迭代 HashSet 的三种方法:使用迭代器、for 循环或 for-each 循环。迭代顺序无法保证,但三种方法均可行。
要在 Java 中迭代 HashSet,您可以使用迭代器,它是一个完全唯一的对象,可帮助您逐个访问集合中的元素。
您也可以使用 for 循环迭代 HashSet。但是,它的效率可能远低于使用迭代器。
最后,您可以使用 for-each 循环迭代 HashSet。
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

