Java中Set的遍历

本文通过一个简单的 Java 示例介绍了 HashSet 和 LinkedHashSet 的使用方法,并对比了 list、map 和 set 的不同之处。同时,文章还解释了 HashSet 的迭代顺序不可预测的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这东西久了没用就记不起来了,记一下。

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * 
 * @author   qianj
 * @version  1.0.0
 * @2011-7-12 上午11:40:19
 */
public class TestSet {
	public static void main(String[] args) {
		Set set = new HashSet();
		
		set.add(new String("11"));
		set.add(new String("222"));
		
		Iterator i = set.iterator();//先迭代出来
		
		while(i.hasNext()){//遍历
			System.out.println(i.next());
		}
		
	}
}

另外,引用一段别人的东西:

list,map,set的区别  
list,map,set的区别 (首先假定小猪都是同一个细胞克隆出来的)
List = 排成一长队的小猪  
Map = 放在一个个,有房间号的屋子里面的一群小猪  
Set = 一群小猪贴上号,然后赶到一个猪圈里

Hashset 它不保证集合的迭代顺序;特别是它不保证该顺序恒久不变。
LinkedHashSet定义了迭代顺序,即按照将元素插入到集合中的顺序(插入顺序)进行迭代。


### 如何在Java遍历Set集合 在Java中,`Set`接口提供了多种方式来迭代其元素。以下是几种常见的方法: #### 使用增强型for循环 这是最简洁的方法之一,适用于任何实现了`Iterable`接口的集合类。 ```java import java.util.HashSet; import java.util.Set; public class IterateSetExample { public static void main(String[] args) { Set<String> set = new HashSet<>(); set.add("Apple"); set.add("Banana"); set.add("Orange"); for (String item : set) { System.out.println(item); } } } ``` 这种方法简单明了,适合大多数场景[^1]。 #### 使用Iterator迭代器 对于更复杂的逻辑控制,可以使用`Iterator`对象来进行手动迭代。 ```java import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class IteratorExample { public static void main(String[] args) { Set<Integer> numbers = new HashSet<>(); numbers.add(1); numbers.add(2); numbers.add(3); Iterator<Integer> iterator = numbers.iterator(); while (iterator.hasNext()) { Integer number = iterator.next(); System.out.println(number); // 如果需要移除当前元素,在这里调用remove() // iterator.remove(); } } } ``` 此方法允许开发者在遍历时安全地修改集合内容,比如删除元素而不引发并发异常。 #### 利用Stream API(Java 8及以上版本) 自Java 8引入流式处理后,通过`stream()`函数可以直接操作集合并应用各种中间操作和终端操作。 ```java import java.util.HashSet; import java.util.Set; public class StreamApiExample { public static void main(String[] args) { Set<Double> decimals = new HashSet<>(); decimals.add(0.5); decimals.add(1.5); decimals.add(2.5); decimals.stream().forEach(System.out::println); // 或者链式调用更多操作符 // decimals.stream().filter(d -> d > 1).sorted().forEach(System.out::println); } } ``` 这种方式不仅能够简化代码结构,还支持并行执行优化性能[^2]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值