##函数式编程替代传统for循环
1. 最基础的forEach方法
```
List list=new ArrayList<>();
list.forEach(e->{
System.out.println(e);
});
```
2. 使用IntStream对集合对象进行操作
####顺序遍历
```
List list = new ArrayList<>();
IntStream.range(0, list.size()).forEach(i -> {
System.out.println(list.get(i));
});
```
####跳跃遍历
```
List list = new ArrayList<>();
IntStream.iterate(0, i -> i + 2).limit(list.size() - 1).forEach(i -> {
System.out.println(list.get(i));
});
```
####用java8的方法计算出高斯求和
```
int sum = IntStream.iterate(1, i -> i + 1).limit(100).sum();
```
####IntStream的range 和 rangeClosed
```
range(S,X)--------S、S+1、S+2、S+3....X-1
rangeClosed(S,X)--S、S+1、S+2、S+3....X
```
####反向遍历
由于range和rangeClosed都是从小的数遍历到大的数、所以不能使用这两个函数来遍历,而iterate()这个函数可以实现反向遍历的效果。
不过感觉这个函数也不咋地,还不如用for函数方便一点。所以我感觉,在日常使用中,基础遍历、顺序遍历这两种我可能会用的比较多、反向和
跳跃遍历感觉有点麻烦。
还有, **foreach()函数的内部不允许修改外部变量,总数感觉JAVA的循环方式不咋地,感觉还是增强for循环爽 :confused:**
```
List list = new ArrayList<>();
IntStream.iterate(list.size() - 1, e -> e - 1).limit(list.size()).forEach(k -> {
System.out.println(list.get(k));
});
```
一键复制
编辑
Web IDE
原始数据
按行查看
历史