利用lambda和Collection.forEach
2.外部VS内部迭代
以前Java集合是不能够表达内部迭代的,而只提供了一种外部迭代的方式,也就是for或者while循环。
|
1
2
3
4
|
List persons = asList(new Person("Joe"), new Person("Jim"), new Person("John"));for (Person p : persons) { p.setLastName("Doe");} |
上面的例子是我们以前的做法,也就是所谓的外部迭代,循环是固定的顺序循环。在现在多核的时代,如果我们想并行循环,不得不修改以上代码。效率能有多大提升还说定,且会带来一定的风险(线程安全问题等等)。
要描述内部迭代,我们需要用到Lambda这样的类库,下面利用lambda和Collection.forEach重写上面的循环
|
1
|
persons.forEach(p->p.setLastName("Doe")); |
现在是由jdk 库来控制循环了,我们不需要关心last name是怎么被设置到每一个person对象里面去的,库可以根据运行环境来决定怎么做,并行,乱序或者懒加载方式。这就是内部迭代,客户端将行为p.setLastName当做数据传入api里面。

浙公网安备 33010602011771号