hashset遍历最常用增强for循环和iterator;增强for适合只读,iterator支持安全删除;还可转数组或stream处理;不支持索引访问。

HashSet 遍历元素有多种方式,最常用的是增强 for 循环和迭代器(Iterator),因为 HashSet 本身不保证顺序,也不支持通过索引访问。
用增强 for 循环遍历
这是最简洁、最常用的方式,适合只读遍历场景:
HashSet<string> set = new HashSet();
set.add("apple");
set.add("banana");
set.add("cherry");
for (String item : set) {
System.out.println(item); // 输出顺序不确定,如 banana, apple, cherry
}</string>
注意:不能在循环中直接调用 set.remove(),否则会抛出 ConcurrentModificationException。
用 Iterator 遍历并安全删除元素
如果需要边遍历边删除,必须使用 Iterator 的 remove() 方法:
Iterator<string> it = set.iterator();
while (it.hasNext()) {
String item = it.next();
if ("banana".equals(item)) {
it.remove(); // 安全删除
}
}</string>
这是唯一推荐的“遍历时删除”的方式,避免并发修改异常。
转成数组或流再遍历(Java 8+)
适合配合函数式操作,比如过滤、映射:
- 转数组:
set.toArray(),但需注意返回 Object[],泛型信息丢失 - 用 Stream:
set.stream().forEach(System.out::println) - 带条件处理:
set.stream().filter(s -> s.length() > 5).forEach(System.out::println)
不推荐的方式
不要尝试用传统 for 循环加索引(如 set.get(i)),因为 HashSet 没有 get(int index) 方法——它不是 List,不支持随机访问。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











