java中的for循环

来源:互联网 发布:java ioc原理 编辑:程序博客网 时间:2024/06/10 00:15
   我们所熟悉的for循环形式是for(;;),但是还有一种增强版的for循环形式(for(obj:list)),是jdk1.5的新特性,一直容易忘记,现在对它的使用规则做一下记录。
    1.参数介绍:
   参数list是for循环需要遍历的对象,而此对象的类型必须是一个数组或者是实现了java.lang.Iterable接口的一个实例,不然编译不会通过。当循环第一次的时候,就把储存在list中的第一个对象赋值给obj,这就意味着obj的类型必须和list存放的对象的类型相匹配。
    2.例子说明:
    for (WebsitesList web :lw) {
       obj=new JSONObject();
       obj.put("webname",web.getWebname());
       obj.put("click",web.getDayClick());
       jsona.add(obj);
    }
   这个for循环的功能是把lw(是ArrayList类型)中的数据赋值给web对象,同时放在json数组之中,其实也相当于如下的写法:
   for (int i=0;i<lw.size();i++){
      WebsitesList web=lw.get(i);
      obj=new JSONObject();
      obj.put("webname",web.getWebname());
      obj.put("click",web.getDayClick());
      jsona.add(obj);  
   }
   通过上面的例子可以看出:第一种写法比较方便和快捷,适合多多使用。
   3.备注:
   符合list的对象类型有:
  AbstractCollection, AbstractList, AbstractQueue,AbstractSequentialList, AbstractSet, ArrayBlockingQueue,ArrayDeque, ArrayList, AttributeList, BeanContextServicesSupport,BeanContextSupport, ConcurrentLinkedQueue, ConcurrentSkipListSet,CopyOnWriteArrayList, CopyOnWriteArraySet, DelayQueue, EnumSet,HashSet, JobStateReasons, LinkedBlockingDeque, LinkedBlockingQueue,LinkedHashSet, LinkedList, PriorityBlockingQueue, PriorityQueue,RoleList, RoleUnresolvedList, Stack, SynchronousQueue, TreeSet,Vector
原创粉丝点击