盘点JDK1.5的新特性(三)——加强for循环

19 篇文章 0 订阅

接着上篇文章来写,其实加强for循环现在用过的人很多,上篇文章中我就已经用到了public static int add(int i,int... js){ for(int j : js) i += j; return i; }

这里再做一个总结,首先解释一下加强for循环:J2SE 1.5提供了另一种形式的for循环。借助这种形式的for循环,可以用更简单地方式来遍历数组和Collection等类型的对象。所谓的加强for循环就是其他语言中的foreach,在java中可以通过这种方式来遍历容器和数组中的数据。

具体的说能够使用加强for循环遍历的可以归纳为两种:

  1. 数组
  2. 所有实现了Iterable接口的类,JDK的API中给了下面一个列表接口 Iterable<T> 所有已知子接口: BeanContext, BeanContextServices, BlockingDeque<E>, BlockingQueue<E>, Collection<E>, Deque<E>, List<E>, NavigableSet<E>, Queue<E>, Set<E>, SortedSet<E> 所有已知实现类: AbstractCollection, AbstractList, AbstractQueue, AbstractSequentialList, AbstractSet, ArrayBlockingQueue, ArrayDeque, ArrayList, AttributeList, BatchUpdateException, BeanContextServicesSupport, BeanContextSupport, ConcurrentLinkedQueue, ConcurrentSkipListSet, CopyOnWriteArrayList, CopyOnWriteArraySet, DataTruncation, DelayQueue, EnumSet, HashSet, JobStateReasons, LinkedBlockingDeque, LinkedBlockingQueue, LinkedHashSet, LinkedList, PriorityBlockingQueue, PriorityQueue, RoleList, RoleUnresolvedList, RowSetWarning, SerialException, ServiceLoader, SQLClientInfoException, SQLDataException, SQLException, SQLFeatureNotSupportedException, SQLIntegrityConstraintViolationException, SQLInvalidAuthorizationSpecException, SQLNonTransientConnectionException, SQLNonTransientException, SQLRecoverableException, SQLSyntaxErrorException, SQLTimeoutException, SQLTransactionRollbackException, SQLTransientConnectionException, SQLTransientException, SQLWarning, Stack, SyncFactoryException, SynchronousQueue, SyncProviderException, TreeSet, Vector
    可以看到常用的Collection,List,Queue,Set接口也都实现了Iterable接口,同理他们的所有子类都可以利用加强for循环来进行遍历,具体例子已经很简单就不多说了,这里要强调的是,加强for循环遍历其实是利用了底层的iterator迭代器,也就是说下面两段代码实际上是一样的List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); for(int i : list){ System.out.println(i); }List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); Iterator<Integer> iterator = list.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next()); }
    所以在调用加强for循环的时候一定要注意所遍历对象的iterator

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值