千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > foreach循环用法

foreach循环用法

来源:千锋教育
发布人:yyy
时间: 2023-06-29 14:46:00 1688021160

  1.用法

  在Java中,foreach循环也被称为增强型for循环。它可以用来遍历数组、集合或其他类似结构的数据。foreach循环的语法如下:

for (element_type element : collection) {
// 循环体
}

   其中,element_type是集合中元素的类型,element是集合中每个元素的变量名,collection是需要遍历的集合。在循环体中,可以使用element变量来访问当前元素的值。

  下面是一个示例,展示了如何使用foreach循环来遍历一个整型数组:

int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
System.out.println(number);
}

   在这个示例中,我们定义了一个整型数组numbers,然后使用foreach循环来遍历这个数组,并在循环体中打印出每个元素的值。输出结果如下:

1678783328544.image

  除了数组,foreach循环还可以用于遍历其他类型的集合,例如List、Set、Map等。不过需要注意的是,对于Map类型的集合,foreach循环只能遍历其中的键或值,而不能同时访问键和值。

  2.案例

  因为我们现在还没学习数组和集合相关的内容,所以壹哥在这里暂时给大家设计一个简单的案例,大家先参照着练习。

public class Demo07 {

public static void main(String[] args) {
// foreach循环

//定义一个整形数组
int[] numbers = { 100, 200, 300, 400, 500 };
for (int x : numbers) {
System.out.print(x+",");
}

System.out.print("\n");

//定义一个字符串数组
String[] names = { "一一哥", "壹壹哥", "千锋教育", "千锋java" };
for (String name : names) {
System.out.print(name+",");
}
}
}

   3.缺陷

  在很多时候,foreach都可以替代for循环,但并不是所有的时候都能替代for,这是因为foreach循环存在着一些缺陷。

  虽然foreach是for循环的增强版,简化了编程,提高了代码的可读性和安全性,避免了数组越界。而foreach一般是结合泛型使用,在需要使用数组或者集合索引时,foreach就不好用了。

  当然有很多朋友会问:为什么java不要在foreach循环里进行元素的remove/add操作?

  在Java中,使用foreach循环迭代集合时,我们不能在循环体中使用remove和add操作来修改集合,否则会抛出ConcurrentModificationException异常。

  这是因为foreach循环底层使用的是迭代器(Iterator)来遍历集合。当我们通过调用集合的remove或add方法删除或添加元素时,会修改集合的结构,导致迭代器的状态不一致,从而引发异常。

  解决这个问题的方法是使用Iterator的remove方法来删除元素。例如:

List list = new ArrayList<>();
Iterator it = list.iterator();
while (it.hasNext()) {
String str = it.next();
if (str.equals("foo")) {
it.remove();
}
}

   在这个例子中,我们使用了Iterator的remove方法来删除元素,而不是在foreach循环中直接调用List的remove方法。这样可以避免ConcurrentModificationException异常的发生。

  总之,如果需要在循环中添加或删除元素,应该使用迭代器的方法,而不是直接调用集合的方法。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT