实现这个接口的对象被允许成为 "foreach" 语句的目标。
从代码上看,Iterable只是包装了一个Iterator<T> iterator();但这样包装一下后,迭代器就变成可迭代的了。
1.5后,引入了foreach,collections都实现了Iterable<T>接口。如果是实现Iterator<T>,则对List list的遍历会是list.next(),这就需要在list内部维护一个位置指针,将这个指针放在抽象出的迭代器中,是合理的。
动态规划的基本思想是将待求解的问题分解为若干个子问题,按顺序求解子问题。前一子问题的解,为后一子问题的求解提供了有用的信息。
动态规划算法和分治法的基本思想比较类似,区别在于动态规划解决的问题可以分解为重叠子问题,而分治法则可以分解为独立的子问题。即动态规划是纵向分解,而分治法是横向分解。
动态规划算法的做法与一般的递归算法相反:一般来说,递归的计算方式是自顶向下;而动态规划则是自底向上。好处是,已经求解过的问题会保存,避免了重复计算。
由于动态规划是纵向切分,其适用条件比较严格,需要满足:
动态规划(Dynamic Programming),这里的规划,是查表的意思。
Iterable<T>接口和动态规划,布布扣,bubuko.com
原文地址:http://www.cnblogs.com/yanyichao/p/3809410.html