A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 张淼 中级黑马   /  2012-9-28 22:48  /  2021 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

增强for循环在遍历时候很好用,但是我忘记了它在什么时候不可用了。

好像隐约记得它只可以做遍历,如果有删除操作的时候就不可以使用增强for循环了,是这样吗?

请高手帮我详细总结一下增强for循环。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

5 个回复

倒序浏览
增强for循环  
  
格式:  
for(数据类型 变量名 : 被遍历的集合(Collection)或者数组)  
{  
      
}  
  
对集合进行遍历。  
只能获取集合元素。但是不能对集合进行操作。  
  
迭代器除了遍历,还可以进行remove集合中元素的动作。  
如果是用ListIterator,还可以在遍历过程中对集合进行增删改查的动作。  
  
传统for和高级for有什么区别呢?  
  
高级for有一个局限性。必须有被遍历的目标。  
  
建议在遍历数组的时候,还是希望是用传统for。因为传统for可以定义脚标。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
增强的for循环主要提供了一种很便捷的方式,其主要可以用来对:
1.基本数据类型的数组
2.实现了iterator的接口的集合框架

增强for的局限性就是没办法在迭代时修改对应的数组或集合框架总元素的内容。

需要注意的是Map集合不可以直接用增强的for循环来迭代:
这里是用增强for循环来迭代map集合的两种方式:
import java.util.*;
public class Test2
{   

         public static void main(String[] argv)
         {
                Map<String,String> map = new HashMap<String,String>();
                map.put("1","a");
                map.put("2","b");
                map.put("3","c");
                /*
                        若想要添加到map集合中的内容是有序的
                        可以用LinkedHashMap
                */
                /*
                    这是第1种
                */
                Set<Map.Entry<String, String>> set = map.entrySet();

                for(Map.Entry<String,String> entry:set)
                {
                        String key = entry.getKey();
                        String value = entry.getValue();
                        System.out.println(key + " "  + value);
                }
                System.out.println("---------------------------");
                /*
                    这是第2种
                */
                Set<String> set2 = map.keySet();
                for(String key: set2)
                {
                        String value = map.get(key);
                        System.out.println(key + " " + value);
                }
       
         }
}

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
语法:
      for(type变量名:集合变量名){...}
注意事项:
      迭代变量必须在()中定义!
      集合变量可以是数组或实现了Iterable接口的集合类
举例:
     public static int add(int x,int ... args){
           int sum =x;
           for(int arg : args){
                  sum+=arg
            }
      return sum;
      }
/*  for(int i=0;i<args.length();i++){
             sum +=args[i];
      } */
回复 使用道具 举报
这就可以了


for(Map.Entry<String,String> entry : map.entrySet())
{
        String key = entry.getKey();
        String value = entry.getValue();
        System.out.println(key + " "  + value);
  }

for(String key : map.keySet())
{
          String value = map.get(key);
          System.out.println(key + " " + value);
}
回复 使用道具 举报
增强for循环和iterator遍历的效果是一样的,也就说增强for循环的内部也就是调用iteratoer实现的,

但是增强for循环有些缺点,例如不能在增强循环里动态的删除集合内容。不能获取下标等
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马