在 Java 中,Set 是一个不包含重复元素的集合,常用的实现类有 HashSet、LinkedHashSet、TreeSet 等。
虽然 Set 没有像 List 那样的索引,但你可以使用**迭代器(Iterator)**来遍历元素。
Iterator 遍历 Setimport java.util.*;
public class SetIteratorDemo {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Orange");
// 获取迭代器
Iterator<String> iterator = set.iterator();
// 使用 while 循环遍历
while (iterator.hasNext()) {
String item = iterator.next();
System.out.println(item);
}
}
}
✅ 关键点:
hasNext():判断是否还有下一个元素next():获取下一个元素for (String item : set) {
System.out.println(item);
}
✅ 简洁,但不能在遍历时删除元素
⚠️ 不要用 set.remove() 在 for-each 中删除元素,会抛异常
✅ 正确方式:使用 iterator.remove()
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if ("Banana".equals(item)) {
iterator.remove(); // 安全删除
}
}
Set<Integer> set = new TreeSet<>();
set.add(3);
set.add(1);
set.add(2);
Iterator<Integer> it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
输出(自动排序):
1
2
3
❌ 在 for-each 中删除元素:
for (String s : set) {
set.remove(s); // ConcurrentModificationException
}
❌ 调用 next() 前不判断 hasNext()
| 方式 | 是否推荐 | 能否删除 |
|---|---|---|
| Iterator | ✅ 推荐 | ✅ 可以 |
| for-each | ✅ 简单 | ❌ 不行 |
| for + index | ❌ 不支持 | ❌ |
如果你使用的是 Java 8+,我也可以给你讲 forEach() 或 Stream 的用法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。