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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李杰 初级黑马   /  2012-8-31 21:11  /  2185 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

for(file f : list)
list 是集合,这样也可以?

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 这个真可以!

查看全部评分

6 个回复

正序浏览
本帖最后由 黑马-李勇 于 2012-9-1 13:32 编辑

for(type 变量名:集合变量名){...}  //不是所有的集合都可以的,其中集合必须实现iterator
例:
public static int add(int x,int...args)
{
        int sum=x;
        for(int arg:args)
        {
                sum+=arg;
        }
        return sum;
}

未命名1.JPG (124.18 KB, 下载次数: 4)

未命名1.JPG
回复 使用道具 举报
格式:
  for(元素类型type 元素变量x : 遍历对象obj)
  {
  引用了x的java语句;
  }
  实例:
  public class Test {
  public static void main(String[] args)
  {
  int[] a = {1,2,3};
  for(int i : a)
  System.out.print(i + " ");
  }
  }
回复 使用道具 举报
高级 For 循环: 用于循环取出集合或数组中的数据。

for (被遍历的数据类型  你定义的变量名字 : 要被遍历的集合名字)

高级 For 遍历时只能循环取出数据,而不能在取出的时候对数据进行 增删 操作,没有迭代器 Iterator 的功能多,但是语句简单。
回复 使用道具 举报
增强for循环格式:(数据类型 变量名:被遍历的集合(Collection)或者数组)
for(String s :al)
{
       System.out.println(s);
}
对集合进行遍历只能获取集合元素
迭代器除了遍历,还可以进行remove集合中元素的动作
如果是用listIterator,还可以在便利过程中对集合进行增删改查。

传统for循环与高级for循环的区别:
高级for循环有一个局限性:必须有被遍历的目标。
在遍历数组时,还是使用传统for循环,因为传统for循环有角标。
举例:
class ForDemo
{
public static void main(String[] args)
{
  ArrayList<String> al=new ArrayList<String>();
  al.add("abc1");
  al.add("abc2");
  al.add("abc3");
  for(String s:al)
  {
   sop(s);
  }
}
public static void sop(Object obj)
{
  System.out.println(obj);
}
}


评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 周兴华 于 2012-8-31 21:43 编辑

你这里应该先有个目录对象dir,然后通过dir.list方法返回文件列表给List对象list。
那么for(file f : list)就是遍历dir目录里面的文件和目录。
高级for循环for(file f : list)执行的效果和下面的代码一样,
Iterator it = list.iterator();
while(it.hasNext())
{
//对it.next()的操作
}


另外高级for有一个局限性。必须有被遍历的目标。
建议在遍历数组的时候,还是希望是用传统for。因为传统for可以定义脚标。

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 赞一个!

查看全部评分

回复 使用道具 举报

评分

参与人数 1技术分 +2 收起 理由
张立江 + 2 叼就一个字

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马