通过demon来看如何在 stream 的map 和 foreach 中使用下标 index
实体测试类
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Student {
private Integer age;
private String name;
}
首先看在 map 中使用 index
guava 的 streams 工具
// test map with index
Streams.mapWithIndex(studentList.stream(),(t, index)->{
System.out.println(t.getName());
System.out.println(index);
return t.getName();
}).count();
forEach 中用到index
1)将 list 的 index 汇聚成流,然后遍历 没一个数据(index),然后再通过list 去 get 每一个元素
IntStream.range(0,studentList.size()).forEach(i->{
System.out.println(studentList.get(i));
});
2)使用局部变量
如果定义的局部变量 int i = 0;
在lambda 表达式中会提醒
Variable used in lambda expression should be final or effectively final
我们可以定义一个int的数组。
int[] b = {0};
studentList.forEach(t->{
System.out.println(b[0]++);
});
0
1
2
3
网友评论