java增强型for循环(三种遍历集合方式)

本文详细介绍了Java中增强型for循环(For-Each循环)的使用方法、语法及优缺点,包括与传统for循环的区别,以及如何在遍历集合或数组时选择合适的循环方式。

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

For-Each循环

For-Each循环也叫增强型的for循环,或者叫foreach循环。

   For-Each循环是JDK5.0的新特性(其他新特性比如泛型、自动装箱等)。

   For-Each循环的加入简化了集合的遍历。

语法如下:

for(type element: array){
	       System.out.println(element);
	  }

Demo:

public static void query(){
		List<Teacher> list = new ArrayList<Teacher>();
		//list里存的是N个Teacher对象
		System.out.println("*****方式一*******");
		//第一种方式  普通for循环
		for(int i=0;i<list.size();i++){
			Teacher t = (Teacher)list.get(i);
			System.out.println(t.getName());
		}
		System.out.println("*****方式二*******");
		//第二种方式 使用迭代器
		for(Iterator<Teacher> iter = list.iterator(); iter.hasNext();){
			System.out.println(iter.next().getName());
		}
		
		System.out.println("*****方式三*******");
		//第三种方式 增强型for循环
		for(Teacher t: list){
			System.out.println(t.getName());
		}
	}


For-Each循环的缺点:丢掉了索引信息。

当遍历集合或数组时,如果需要访问集合或数组的下标,那么最好使用旧式的方式来实现循环或遍历,而不要使用增强的for循环,因为它丢失了下标信息。

### Java 增强型 For 循环实现部分遍历 增强型 `for` 循环用于简化数组或集合遍历过程,但在某些情况下可能需要执行部分遍历。为了达到这一目的,可以结合其他控制结构来限定遍历范围。 #### 使用计数器变量限制遍历次数 通过引入一个外部计数器,在每次迭代时增加该计数器并检查其值是否超过指定的最大数量: ```java Collection<String> collection = new ArrayList<>(Arrays.asList("Java", "C++", "Python", "Go", "Ruby")); int maxCount = 3; int count = 0; for (String item : collection) { if (count >= maxCount) break; System.out.println(item); count++; } ``` 此代码片段展示了如何仅打印前三个元素[^1]。 #### 利用子列表/子集进行部分遍历 对于支持随机访问的数据结构(如 `ArrayList`),可以直接获取所需索引区间的视图来进行遍历;而对于不支持随机访问的数据结构,则可以通过流式处理API创建有限制条件下的新序列: 针对 `List` 类型对象的部分遍历方式如下所示: ```java List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); // 获取从位置 start 到 end 的子列表 int startIndex = 1; int endIndex = 3; for (Integer number : numbers.subList(startIndex, endIndex)) { System.out.print(number + " "); } System.out.println(); // 输出结果为:2 3 ``` 当面对无法直接获得子集的情况时,可借助于 Stream API 来完成相同功能: ```java Set<Character> characters = Set.of('a', 'b', 'c', 'd'); characters.stream() .limit(2L) // 取前两个元素 .forEach(System.out::print); // 输出结果为 ab ``` 上述两种方法均能有效地实现在特定范围内应用增强型 `for` 循环的效果[^2]。 #### 结合布尔标志位提前终止循环 如果希望基于某个逻辑判断停止进一步遍历,可以在循环体内设置一个标记变量,并在其满足一定条件下跳出当前循环体: ```java boolean shouldStop = false; for (Object obj : someIterableStructure) { if (!shouldContinueCondition()) { shouldStop = true; continue; } process(obj); if (shouldStop) break; } ``` 这种方法提供了更大的灵活性,允许动态决定何时结束遍历操作[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值