java8 的 foreach 和 map 中使用 index

通过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

你可能感兴趣的:(java8 的 foreach 和 map 中使用 index)